【QCon】精华内容上线92%,全面覆盖“人工智能+”的典型案例!>>> 了解详情
写点什么

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

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

关注

评论

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

mac电脑3D图形必备Maya 2024 最新中文激活版

胖墩儿不胖y

玛雅2024下载 Mac软件推 图形软件

从数据孤岛到企业xP&A的演化

智达方通

全面预算管理 全面预算管理系统 扩展规划和分析

英特尔吕冬:英特尔与玩家共同见证电竞首次入亚

E科讯

云米科技的互联网家电太贴心啦!幸福感直线拉升

新消费日报

React 的七个值得推荐的动画库

EquatorCoco

前端 React 动画效果

软件测试/测试开发丨Pytest和Allure报告 学习笔记

测试人

Python 程序员 软件测试 pytest Allure

大厂简历优化+面试题目+面经

程序员万金游

多线程并发 #java #面试 #资料 #Spring

拥抱变革 向新而行丨瑞友信创新品隆重上市暨战略发布盛典圆满落幕

瑞友

信创 信创重器 天下共享 瑞友公司 信创解决方案

Principle for Mac(动画交互设计软件) v6.25中文版

mac

苹果mac Windows软件 Principle 动画交互式软件

POW+POS模式挖矿+利息分红混合模式系统开发

V\TG【ch3nguang】

挖矿系统开发

一体化智能可观测平台助力车企数智化转型

博睿数据

面部表情识别技术在医疗领域的应用

来自四九城儿

推荐程序员提高生产力的工具

互联网工科生

版本控制 生产力 单元测试 功能测试

杭州悦数入选 Gartner®《中国数据分析与人工智能技术成熟度曲线,2023》

悦数图数据库

图数据库

关于低代码开发平台的思考

树上有只程序猿

软件开发 低代码 数字化 企业级应用程序开发 JNPF

面部表情识别技术在教育领域的应用前景

来自四九城儿

数字货币发币系统开发搭建

V\TG【ch3nguang】

数字货币钱包开发

控制风险,是质量保障的核心工作

老张

风险管理 质量保障

《华为云DTSE》期刊2023年第二季—HDC.Cloud 2023专刊

华为云开发者联盟

云计算 华为云 华为云开发者联盟 企业号 8 月 PK 榜

架构设计:Docker容器化部署

高端章鱼哥

Docker 架构 容器化部署

低代码的探索之路

高端章鱼哥

软件开发 低代码 企业数字化转型 JNPF

面部表情识别的未来发展趋势和应用前景

来自四九城儿

技术分享 | RCU :内核小“马达”,让你的产品弯道超车

鼎道智联

代码人生

Microsoft Word 2019 for mac(文字处理软件word mac)中文正式版

mac

windows 苹果mac Word 2019 文字处理软件

一步到位,详解 Milvus 2.3

Zilliz

非结构化数据 Milvus Zilliz 向量数据库

积分商城开发

西安链酷科技

积分商城 电商系统

行业首创 !Graph RAG:基于知识图谱的检索增强技术与优势对比(附 Demo)

悦数图数据库

图数据库

龙蜥白皮书精选:SysAK—大规模复杂场景的系统运维利器

OpenAnolis小助手

操作系统 白皮书 系统运维 龙蜥社区 SysAK

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