把握行业变革关键节点,12 月 19 日 - 20 日,AICon北京站即将重磅启幕! 了解详情
写点什么

基于.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:041435
用户头像

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

关注

评论

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

开源IM聊天程序HarmonyChat:基于鸿蒙NEXT的WebSocket协议

JackJiang

即时通讯;IM;网络编程

LED和LCD的15个不同之处

Dylan

LCD1602液晶显示屏 LED LED display LED显示屏 lcd

构建AI Agent必学的4种设计模式,一文了解

Baihai IDP

程序员 AI LLMs AI Agents AI 助手

京东供应链创新与实践:应用数据驱动的库存选品和调拨算法提升履约效率

京东科技开发者

2024年Apache DolphinScheduler社区高光时刻总结!

白鲸开源

Apache DolphinScheduler 2024年终总结

白鲸开源WhaleStudio荣获2024星空奖!

白鲸开源

datafun 数据集成平台 大数据调度 白鲸开源 星空奖

2024年终福利 | Apache DolphinScheduler案例合集,附PDF下载

白鲸开源

Apache DolphinScheduler 大数据 开源 案例集 大数据调度

《计算机组成及汇编语言原理》阅读笔记:p178-p199

codists

计算机组成及汇编语言原理

博世智驾新动力:Apache DolphinScheduler如何征服数据处理挑战

白鲸开源

人工智能 Apache DolphinScheduler 智能驾驶 博世智驾

VUE3与JNPF快速开发平台的完美结合

伤感汤姆布利柏

SecureCRT & SecureFX 9.6 for macOS, Linux, Windows - 跨平台的多协议终端仿真和文件传输

sysin

securecrt

每年一问:Java日期格式化中周所在年引发的bug

白鲸开源

开源 Apache DolphinScheduler 日期 大数据调度

GreatSQL temp文件占用时长分析

GreatSQL

淘宝APP分类API接口:开发、运用与收益全解析

科普小能手

数据挖掘 淘宝 电商 API 接口 API 测试

Helm适配华为云OBS实践分享,更方便地部署、管理复杂应用

华为云开发者联盟

开源 Kubernetes Helm OBS

CST软件如何计算天线fidelity保真度?达索代理思茂信息

思茂信息

cst cst操作 CST软件

AI技术在英语学习领域的应用

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语学习

由 Mybatis 源码畅谈软件设计(九):“能用就行” 其实远远不够

京东科技开发者

业务监控—一站式搭建jmeter+telegraf+influxdb+Grafana看板

京东科技开发者

AI赋能产业升级:探索人工智能在不同领域的实际应用

天津汇柏科技有限公司

AI 人工智能

AI | 数智创新,引导财务共享建设新方向

用友智能财务

政策 解读 会计

AI英语阅读APP的技术框架

北京木奇移动技术有限公司

AI教育 软件外包公司 AI英语学习

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