写点什么

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

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

关注

评论

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

阿里巴巴1688 API接口深度解析:如何高效获取商品详情与关键词搜索商品数据

代码忍者

1688API接口

NocoBase vs Salesforce:谁才是你的理想 CRM?

NocoBase

开源 低代码 CRM 无代码 Salesforce

分布式系统架构:服务容错

不在线第一只蜗牛

数据库 架构 分布式

AI语法和写作App的开发功能

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

软件外包公司 AI写作 AI语法

鲲鹏原生:助力安超云管理平台3.0开发、发布及高效运行

极客天地

从5天到1天,某大型国有集团的数智化转型经历了什么?

袋鼠云数栈

深入浅出Flink CEP丨如何通过Flink SQL作业动态更新Flink CEP作业

袋鼠云数栈

KubeEdge助力边缘AI应用,实现GPU算力加速

华为云原生团队

云计算 容器 云原生

AppCrawler 自动遍历测试实践(二):定制化配置

测试人

软件测试

CST如何查看I求解器的近场分布

思茂信息

cst 电磁仿真 仿真教程

原生APP开发的优点

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

软件外包公司 原生APP开发

云开发 AI 实战—基于云开发 Copilot快速开发陕西家乡小程序实战

申公豹

小程序

AI英语词汇评测系统的功能

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

软件外包公司 AI口语练习 AI评测

自动排产系统:如何实现生产计划优化的关键策略

万界星空科技

mes 万界星空科技mes 自动排产 智能排产

苹果M4芯片能玩《黑神话:悟空》吗?黑神话悟空新手入门攻略

阿拉灯神丁

CrossOver Mac下载 PD虚拟机激活秘钥 Mac游戏分享 CrossOver 24 黑神话悟空

AI教育软件的开发流程

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

AI教育 软件外包公司 AI听力练习

开始报名,龙蜥社区系统运维联盟MeetUp暨iAutoBASE专题论坛来啦

OpenAnolis小助手

操作系统 龙蜥meetup 龙蜥系统运维联盟

澳门某客户:通过HAP平台整合18个系统,节省20%仓储成本

明道云

峰会快讯:Doris Summit Asia 2024 圆满落幕!

SelectDB

数据仓库 数据分析 Doris 大数据 开源 技术峰会

【连载 05】自定义线程池(上)

FunTester

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