java设计模式之责任链
来源:互联网 发布:软件协议是什么情况 编辑:程序博客网 时间:2024/06/01 10:20
在 面向对象程式设计里, 责任链模式是一种软件设计模式,它包含了一些命令对象和一系列的处理对象。每一个处理对象决定它能处理哪些命令对象,它也知道如何将它不能处理的命令对象传递给该链中的下一个处理对象。该模式还描述了往该处理链的末尾添加新的处理对象的方法。
下面通过一个小例子来演示该模式。
首先我们先写一段测试程序。main.java 这个例子我们主要的操作是对一条字符串中的字符进行过滤和替换。
package com.flj.main;public class Main {/** * @param args */public static void main(String[] args) {String msg = "大家好!敏感词,<>";mainProcessor mp = new mainProcessor();mp.setMsg(msg);System.out.println(mp.process());}}
然后写一个执行操作的程序。
package com.flj.main;public class mainProcessor {private String msg;Filter[] filters = {new Filter1(),new Filter2()};public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public String process(){String r = msg;for(Filter f : filters){r = f.doFilter(r);}return r;}}
定义一个Filter接口类,里面定义一个doFilter()方法。
package com.flj.main;public interface Filter {public String doFilter(String str);}
定义两个Filter的实现类。
package com.flj.main;public class Filter1 implements Filter {@Overridepublic String doFilter(String str) {String r = str.replace("<", ":)").replace(">", "^^");return r;}}
package com.flj.main;public class Filter2 implements Filter {@Overridepublic String doFilter(String str) {String r = str.replace("大家好", "各位早上好啊");return r;}}
最后执行我们的测试程序,结果如图
可以发现字符串“大家好!敏感词,<>”被替换成了“各位早上好啊!敏感词,:)^^”。
那么我们传统的写法是在mainProcessor类的process方法中把Filter1和Filter2的执行代码就写在一堆,如果要继续添加处理就往里面再继续添加代码,但是这样我们可以发现可别不灵活,那么采用上面的责任链编程思想呢,我们如果想要对字符串再进行操作,那么我们只需继续添加一个Filter的实现类,然后在mainProcessor类中让其依次执行即可,这是程序修改起来特别的方便,这就是责任链编程的好处。
- java设计模式之责任链模式
- java设计模式之责任链模式
- Java 设计模式之责任链模式
- Java设计模式之责任链模式
- 《Java设计模式》之责任链模式
- 《Java设计模式 》之责任链模式
- JAVA设计模式之:责任链模式
- java设计模式之责任链模式
- java设计模式之责任链模式
- Java设计模式之责任链模式
- java设计模式之责任链模式
- 《java设计模式》之责任链模式
- java设计模式之责任链模式
- Java设计模式之责任链模式
- java设计模式之责任链模式
- Java设计模式之责任链模式
- JAVA设计模式之责任链模式
- java设计模式之责任链模式
- linux索引节点的介绍
- 新的开端
- 戈尔巴乔夫
- XHProf找不到Run id解决方法
- svn + vs 2008 2010 2012 环境搭建
- java设计模式之责任链
- C/C++函数指针(typedef简化定义)
- HDOJ 1010 深度优先搜索 用例过了还是WA了不知道为什么
- 待处理事情三
- 无意中发现的,google浏览器对小字体不支持
- 贪心小结 [贪心专题16题] --Orz爱神
- 用于检测长度、检测用户名是否合法和检测E-mail等的js代码
- (转)LCD的接口类型详解
- Enterprise Architect 7.0入门教程