写点什么

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

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

关注

评论

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

Python代码阅读(第33篇):反转字典

Felix

Python 编程 Code Programing 阅读代码

12道Zookeeper高频面试题,你顶得住吗?

Java 架构 面试 分布式 后端

(深入篇)漫游语音识别技术—带你走进语音识别技术的世界

攻城先森

深度学习 音视频 nlp 语音识别

【LeetCode】字符串中的单词数Java题解

Albert

算法 LeetCode 10月月更

让我薪资提升了个新高度!这份阿里核心教程:理解JVM垃圾回收器手册帮了我大忙!

Java 架构 面试 程序人生 编程语言

2021年常见面试真题汇总,含了14个技术栈,已助我成功拿到腾讯offer!

Java 架构 架构师 java面试

毕业设计项目

燕燕 yen yen

架构是训练营

架构实战营模块九作业

maybe

模块六作业

Geek_fc100d

「架构实战营」

私有云部署系列之动态IP获取(程序编写)

稻草鸟人

模块五作业

Geek_fc100d

「架构实战营」

金九银十一线大厂Java面试题大全(整理版)1000+面试题附答案详解,最全面详细!

Java 程序员 架构 面试 后端

Apache ShenYu源码阅读系列-基于ZooKeeper的数据同步

子夜2104

Java 网关 shenyu

40K成功入职:六年开发终获小米Offer(附面经+面试题+答案详解)

Java spring 程序员

架构1期模块九作业

五只羊

架构实战营

(mode4)千万级学生管理系统考试试卷存储方案

消失的子弹

架构 云原生

面试进阶必备:“阿里爸爸”高并发秒杀架构设计笔记(全彩版)

Java 架构 面试 程序人生 编程语言

Spark 系列教程(2)运行模式介绍

Se7en

不愧是阿里P8架构师总结的Java面试笔记,上线仅七天,Github标星55K

Java 程序员 架构 面试 后端

Zabbix VS Prometheus :哪个更适合你

耳东@Erdong

后端 Prometheus zabbix 引航计划 10月月更

华为大佬的“百万级”MySQL笔记,基础+优化+架构一键搞定

Java 架构 面试 程序人生 编程语言

《Go 开发指南》-管理 Go 环境

看山

Effective-go 10月月更

这份阿里P8撰写的面试笔记就是逊了!才帮助十几个人圆了大厂梦

Java 架构 面试 程序人生 编程语言

架构实战营 毕业总结和毕业设计项目

李东旭

「架构实战营」

Android平台音视频实战|引航计划|音视频

轻口味

音视频 引航计划 内容合集 技术专题合集

这份笔记太牛了!手把手教你从零开始搭建Spring Cloud Alibaba!

Java 架构 面试 程序人生 编程语言

太牛了!同事凭借这份Java面试题1000道手册(pdf)入职了阿里,定级P7

Java spring 程序员 架构 编程语言

🏆【Alibaba工具型技术系列】「EasyExcel技术专题」实战技术针对于项目中常用的Excel操作指南

码界西柚

Excel EasyExcel Alibaba Alibaba技术 10月月更

靠这份GitHub star过万的1121页图解算法成功杀进字节跳动

Java 架构 面试 程序人生 编程语言

微博评论系统架构设计

guangbao

(实战篇)漫游语音识别技术—带你走进语音识别技术的世界

攻城先森

深度学习 音视频 nlp 语音识别

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