设计模式之责任链模式
2014-11-15 22:09
309 查看
描述:责任链模式是一种对象的行为模式。在责任链模式里,很多对象由每一个对象对其下家的引用而连接起来形成一条链。请求在这个链上传递,直到链上的某一个对象决定处理此请求。发出这个请求的客户端并不知道链上的哪一个对象最终处理这个请求,这使得系统可以在不影响客户端的情况下动态地重新组织和分配责任。
类图:
代码:
Filter过滤器
HTML过滤器
TAG过滤器
FilterChain过滤器链
调用者
上述代码还只支持单向过滤,要支持双向过滤,可以参考tomcat的过滤器源码。
类图:
代码:
Filter过滤器
/** * 过滤器接口 * */ public interface Filter { public String doFilter(String msg); public Filter Next(); public void setFilter(Filter filter); }
HTML过滤器
public class HTMLFilter implements Filter { private Filter filter; @Override public String doFilter(String msg) { msg = msg.replace(" ", " "); return msg ; } @Override public Filter Next() { return filter; } public Filter getFilter() { return filter; } public void setFilter(Filter filter) { this.filter = filter; } }
TAG过滤器
public class TagFilter implements Filter{ private Filter filter ; @Override public String doFilter(String msg) { msg = msg.replace("<", "["); msg = msg.replace(">", "]"); return msg; } @Override public Filter Next() { return filter; } public Filter getFilter() { return filter; } public void setFilter(Filter filter) { this.filter = filter; } }
FilterChain过滤器链
public class FilterChain { private Filter filter ; public FilterChain(Filter _filter){ this.filter = _filter ; } public String doFilter(String msg){ // FIXME 仅支持单向过滤模式 while(null != filter){ msg = filter.doFilter(msg); filter = filter.Next() ; } return msg ; } }
调用者
public class Main { public static void main(String[] args){ Filter htmlFilter = new HTMLFilter(); Filter tagFilter = new TagFilter(); htmlFilter.setFilter(tagFilter) ; FilterChain chain = new FilterChain(htmlFilter) ; String msg = chain.doFilter("我是一个中国人。 <a>http://baidu.com</a>"); System.out.println(msg); } }
上述代码还只支持单向过滤,要支持双向过滤,可以参考tomcat的过滤器源码。
相关文章推荐
- 设计模式之责任链模式
- 设计模式——责任链模式(Chain Of Responsibility)
- 设计模式之责任链模式(七)
- 常用设计模式总结--责任链模式
- C语言和设计模式(责任链模式)
- 设计模式--责任链模式(COR)
- 设计模式学习-每日一记(23.责任链模式)
- 极速理解设计模式系列:12.责任链模式(Chain of Responsibility Pattern)
- C语言和设计模式(责任链模式) 07
- 设计模式——责任链模式小结
- 设计模式--责任链模式(COR)
- 设计模式 Design Parttern ——责任链模式Chain of Responsibility
- 设计模式 - Chain of Responsibility Pattern(责任链模式)
- 23种设计模式之责任链模式(Chain of Responsibility)
- 设计模式--责任链模式(COR)
- 设计模式 - Chain of Responsibility Pattern(责任链模式)
- 十 设计模式之责任链模式
- HeadFirst 设计模式学习笔记9--责任链模式
- 设计模式利剑10-责任链模式
- GoF 23个经典的设计模式13--行为模式之 责任链模式(未完代续)