写点什么

基于.NET 的职责链模式类库——NChain

  • 2008-10-05
  • 本文字数:1964 字

    阅读完需:约 6 分钟

Chain.NET(又名 NChain)职责链模式在.NET 和Mono 平台上的一个实现。它的0.1 版本(已可以在SourceForge 中访问)结合了标准的职责链模式以及命令模式,目的是“为基于命令处理的功能提供一个方便而又灵活的解决方案”。NChain 松散地基于Java 平台上的 Jakarta 的 Commons Chain 包。一般说来,职责链模式从一系列处理单元中分解出命令对象从而解耦。每个处理单元均包含相应的代码,以描述它可接受的命令对象的类型;另外它还会委托部分责任,用来处理与职责链上下一个处理单元不相匹配的对象。

以下是一个简单的职责链模式的示例

using System;<br></br>using System.Collections;<br></br> <br></br>namespace Chain_of_responsibility<br></br>{<br></br>        public interface IChain<br></br>        {<br></br>                bool Process(object command);<br></br>        }<br></br> <br></br>        public class Chain<br></br>        {<br></br>                private ArrayList _list;<br></br> <br></br>                public ArrayList List<br></br>                {<br></br>                        get<br></br>                        {<br></br>                                return _list;<br></br>                        }<br></br>                }<br></br> <br></br>                public Chain()<br></br>                {<br></br>                        _list = new ArrayList();<br></br>                }<br></br> <br></br>                public void Message(object command)<br></br>                {<br></br>                        foreach ( IChain item in _list )<br></br>                        {<br></br>                                bool result = item.Process(command);<br></br> <br></br>                                if ( result == true ) break;<br></br>                        }<br></br>                }<br></br> <br></br>                public void Add(IChain handler)<br></br>                {<br></br>                        List.Add(handler);<br></br>                }<br></br>        }<br></br> <br></br>        public class StringHandler : IChain<br></br>        {<br></br>                public bool Process(object command)<br></br>                {<br></br>                        if ( command is string )<br></br>                        {<br></br>                                Console.WriteLine("StringHandler can handle this message <p>: {0}",(string)command);</p><br></br> <br></br>                                return true;<br></br>                        }<br></br> <br></br>                        return false;<br></br>                }<br></br>        }<br></br> <br></br>        public class IntegerHandler : IChain<br></br>        {<br></br>                public bool Process(object command)<br></br>                {<br></br>                        if ( command is int )<br></br>                        {<br></br>                                Console.WriteLine("IntegerHandler can handle this message <p>: {0}",(int)command);</p><br></br> <br></br>                                return true;<br></br>                        }<br></br> <br></br>                        return false;<br></br>                }<br></br>        }<br></br> <br></br>        class TestMain<br></br>        {<br></br>                static void Main(string[] args)<br></br>                {<br></br>                        Chain chain = new Chain();<br></br> <br></br>                        chain.Add(new StringHandler());                       <br></br>                        chain.Add(new IntegerHandler());<br></br> <br></br>                        chain.Message("1st string value");<br></br>                        chain.Message(100);<br></br>                }<br></br>        }<br></br>}<p>NChain 提供了一个比较类似,但更为强壮的架构。</p><br></br>>

NChain 需要更进一步的测试以及性能监控,来确定它到底是否适用于企业应用架构。这是个开源项目,并且提供了有用的入门示例可供快速入门。目前看来,在各种考虑使用命令模式,并且需要根据上下文来执行不同类型命令的场景下,NChain 都会有一定用武之地。查看英文原文:.NET Chain of Responsibility Library

2008-10-05 02:041456
用户头像

发布了 157 篇内容, 共 62.9 次阅读, 收获喜欢 6 次。

关注

评论

发布
暂无评论
发现更多内容

提示词工程师:为AI当翻译

飞桨PaddlePaddle

人工智能

制作木制纹理的黄鹤楼3D模型

3D建模设计

gltf/glb模型 材质贴图 纹理贴图 材质纹理 GLTF材质编辑

Flink State 状态原理解析 | 京东物流技术团队

京东科技开发者

flink 实战 state Flink State

AI 与 Web3 数据行业融合的现状、竞争格局与未来机遇探析(下)

Footprint Analytics

区块链 web3 AI智能

Amazon Code Whisperer 的正式使用,全新 AI 代码工具等你发现!(内附详细安装步骤图解)

亚马逊云科技 (Amazon Web Services)

Python 人工智能 云上探索实验室 Amazon CodeWhisperer Amazon Cloud9

Vue混淆与还原

制作古风纹理的滕王阁3D模型

3D建模设计

材质贴图 纹理贴图 材质纹理 GLTF材质编辑

借助AI构建企业营销数据,锁定目标客户价值模型

用友BIP

数智营销

WebSocket 连接:完全指南及高效实现方法

Apifox

程序员 前端 Web 网络编程 websocket

合约跟单交易所开发

区块链技术

95所双一流高校参与,“搜索界奥林匹克”决出28个获奖团队

极客天地

喜报!博睿数据荣获“2023年度卓越数字创新企业”

博睿数据

可观测性 博睿数据

岳阳楼3D模型纹理贴图

3D建模设计

材质贴图 纹理贴图 材质纹理 GLTF材质编辑

扫盲Kafka?看这一篇就够了! | 京东云技术团队

京东科技开发者

kafka 消息队列 kafka架构

Wireshark中的ARP协议包分析是什么?

小齐写代码

每日一题:LeetCode-78. 子集

Geek_4z9ami

面试 算法 LeetCode 刷题 回溯

大语言模型底层架构丨带你认识Transformer

华为云开发者联盟

Python 人工智能 华为云 华为云开发者联盟 大预言模型

淘宝商品详情页面数据接口(taobao.item_get)

tbapi

淘宝 淘宝API接口 淘宝商品详情接口 淘宝商品API接口 淘宝商品数据接口

虚拟线程原理及性能分析

得物技术

jdk 性能优化

带你玩转 Vite + Vue3 高低版本常用玩法 | 京东云技术团队

京东科技开发者

Vue 前端 vite

让数据成为生产力,用友时序数据库为智造按下“瞬时加速键”

用友BIP

时序数据库

XSKY SDS V6.3 版本发布:持续强化非结构化存储和管理能力

XSKY星辰天合

软件定义存储

制作木制纹理的蓬莱阁3D模型

3D建模设计

材质贴图 纹理贴图 材质纹理 GLTF材质编辑

数据驱动:离散制造行业财务报告应用场景与实践

用友BIP

数据驱动

13 | 线性排序:如何根据年龄给100万用户数据排序?

鲁米

虾皮关键词详情API接口在电商行业中的重要性及实时数据获取实现

Noah

如何为游戏角色3D模型设置纹理贴图

3D建模设计

材质 纹理 贴图 3D模型纹理贴图 GTLF/GLB

写实3D游戏模型纹理贴图设置

3D建模设计

材质 纹理 贴图 3D模型纹理贴图

淘宝/天猫商品详情 API 的技术架构是怎样的?

技术冰糖葫芦

API 开发

为 3D 模型制作纹理的 9 种最佳方法

3D建模设计

材质 纹理 贴图 3D模型纹理贴图

基于.NET的职责链模式类库——NChain_.NET_Al Tenhundfeld_InfoQ精选文章