责任链模式
来源:互联网 发布:如何做好淘宝客 编辑:程序博客网 时间:2024/05/25 19:58
责任链模式:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。
责任链模式由两个角色组成:
1) 抽象处理者角色(Handler):它定义了一个处理请求的接口。当然对于链子的不同实现,也可以在这个角色中实现后继链。
2) 具体处理者角色(Concrete Handler):实现抽象角色中定义的接口,并处理它所负责的请求。如果不能处理则访问它的后继者。
public abstract class Handler{
protected Handler successor;
protected String name;
public String getName(){
return name;
}
//处理请求,由子类完成
public abstract void handleRequest(String request);
//设置下一个处理请求的人
public void setNextHandle(Handler successor){
this.successor = successor;
}
}
public LaoShi extends Handler{
public LaoShi(String name){
this.name = name;
}
public void handleRequest(String request){
if("请假不去上课".equals(request)){
System.out.println(name+"可以处理"+request+",给与批准");
}else{
System.out.println(name+"不可以处理"+request+"转交给"+successor.getName());
successor.handleRequest(request);
}
}
}
public class BanZhang extends Handler {
public BanZhang(String name) {
this.name = name;
}
public void handleRequest(String request) {
if ("不去开班会".equals(request)) {
System.out.println(name + "可以处理" + request + ",给予批准!");
} else {
System.out.println(name + "不可以处理" + request + "转交给"
+ successor.getName());
successor.handleRequest(request);
}
}
}
责任链模式优点,上面已经体现出来了。无非就是降低了耦合、提高了灵活性。但是责任链模式可能会带来一些额外的性能损耗,因为它要从链子开头开始遍历。
因为无法预知来自外界(客户端)的请求是属于哪种类型,每个类如果碰到它不能处理的请求只要放弃就可以。
缺点是效率低,因为一个请求的完成可能要遍历到最后才可能完成,当然也可以用树的概念优化。 在Java AWT1.0中,对于鼠标按键事情的处理就是使用CoR,到Java.1.1以后,就使用Observer代替CoR
扩展性差,因为在CoR中,一定要有一个统一的接口Handler.局限性就在这里。
- 责任链模式
- 深入浅出责任链模式
- 责任链模式
- 责任链模式
- 深入浅出责任链模式
- 责任链模式(一)
- 责任链模式(二)
- 责任链模式(三)
- 责任链模式
- java责任链模式
- 责任链模式
- 责任链模式
- 责任链模式
- 责任链模式
- 责任链模式
- c++ 责任链模式
- java责任链模式
- 责任链模式
- BigDecimal运算函数
- java.lang.ClassNotFoundException: org.apache.coyote.tomcat4.CoyoteConnector
- 判读当前选中那个UITextField
- freetype安装时遇到的问题
- Net中的反射
- 责任链模式
- JTable选择一行,输入数字,自动向前移动一位,点击退格键,删除最后一个数字
- 基于OSGi的Web应用开发系列一(转帖)
- Hibernate的三种连接池设置C3P0、Proxool和DBCP
- 多线程还是多进程
- 咋就这么感动?
- insmod 命令的用法
- 基于OSGi的Web应用开发系列二(转帖)
- gtk tutorial