niedashun1 发表于 2013-1-27 04:50:19

设计模式之Chain of Responsibility(职责链)

Chain of Responsibility定义
   Chain of Responsibility(CoR) 是用一系列类(classes)试图处理一个请求request,这些类之间是一个松散的耦合,唯一共同点是在他们之间传递request. 也就是说,来了一个请求,A类先处理,如果没有处理,就传递到B类处理,如果没有处理,就传递到C类处理,就这样象一个链条(chain)一样传递下去。
 
Request类的定义
public class Request{  private String type;  public Request(String type){this.type=type;}  public String getType(){return type;}  public void execute(){    //request真正具体行为代码  }} 
Handler接口
public interface Handler{  public void handleRequest(Request request);} 
Handler实现
public class ConcreteHandler implements Handler{  private Handler successor;  public ConcreteHandler(Handler successor){    this.successor=successor;  }  public void handleRequest(Request request){    if (request instanceof HelpRequest){      //这里是处理Help的具体代码    }else if (request instanceof PrintRequst){      request.execute();    }else      //传递到下一个      successor.handle(request);    }  }} 
  与Command模式区别:
Command 模式需要事先协商客户端和服务器端的调用关系,比如 1 代表 start 2 代表 move 等,这些 都是封装在 request 中,到达服务器端再分解。
CoR 模式就无需这种事先约定,服务器端可以使用 CoR 模式进行客户端请求的猜测,一个个猜测 试验。
此设计模式在jbpm中流程流转中用到。
页: [1]
查看完整版本: 设计模式之Chain of Responsibility(职责链)