几年后再倒回来复习 马士兵老师的责任链设计模式实现方式 仍然很经典
2013-06-18 16:06
579 查看
时隔2年,现在已经从java走向了c# , 复习设计模式的时候想起马士兵老师的责任链实现方式, 太经典了,经典的不是这个链的实现,而是他将责任链类也实现了接口,这样链本身也是一个Filter,从而可以实现将该类的实例当成Filter添加到该类的实例中。
using System; using System.Collections.Generic; public interface Filter { String doFilter(String str); } public class FilterChain : Filter { List<Filter> filters = new List<Filter>(); public FilterChain addFilter(Filter f) { this.filters.Add(f); return this; } public String doFilter(String str) { String r = str; foreach (Filter f in filters) { r = f.doFilter(r); } return r; } } public class HTMLFilter : Filter { public String doFilter(String str) { String r = str.Replace('<', '[') .Replace('>', ']'); return r; } } public class SensitiveFilter : Filter { public String doFilter(String str) { String r = str.Replace("被就业", "就业") .Replace("敏感", ""); return r; } } public class FaceFilter : Filter { public String doFilter(String str) { return str.Replace(":)", "^V^"); } } public class MsgProcessor { public FilterChain Fc { get; set; } public string Msg { get; set; } public String process() { return Fc.doFilter(this.Msg); } } public class Program { static void Main(string[] args) { String msg = "大家好:),<script>,敏感,被就业,网络授课没感觉,因为看不见大家伙儿"; MsgProcessor mp = new MsgProcessor(); mp.Msg=msg; FilterChain fc = new FilterChain().addFilter(new HTMLFilter()).addFilter(new SensitiveFilter()); FilterChain fc2 = new FilterChain().addFilter(new FaceFilter()); fc.addFilter(fc2);//经典之处,将1个链添加到另一个链 mp.Fc=fc; String result = mp.process(); Console.WriteLine(result);//字符串非法字符过滤掉的结果 Console.Read(); } }
相关文章推荐
- Model1方式实现DAO设计模式
- 安卓设计模式之单例模式的五种实现方式
- 单例设计模式的4种实现方式
- 设计模式-PHP实现单件模式的几种方式
- 架构设计之设计模式 (四) Java中多种方式实现单例模式
- 责任链或过滤器模式2-使用过滤链-马士兵设计模式教程 .
- 设计模式:单例模式(Singleton) java实现及实现方式对比
- iOS应用设计模式开发中职责链(责任链)模式的实现解析
- 经典设计模式-iOS的实现
- 关于观察着设计模式的四种实现方式
- Redis存储Key的一种设计实现方式:模式匹配
- Java设计模式(二):单例模式的5种实现方式,以及在多线程环境下5种创建单例模式的效率
- java中单例设计模式的两种实现方式
- 设计模式之单例模式简介与几种实现方式
- 设计模式 之 单例模式 (C++ 懒汉经典实现 & DCL实现 & 饿汉经典实现)
- [转]23种经典设计模式的java实现_5_职责链模式
- 设计模式 行为模式 责任链 c语言 版本实现
- 设计模式之桥接模式JavaScript实现方式1
- 设计模式之单例模式 (五种单例模式实现方式) 并利用CountDownLatch类在多线程下比较效率
- 23种经典设计模式的java实现之生成器模式