JDON中china of Responsibility模式的疑惑?
大家好:
这两天看了关于设计模式中职责链模式chain of Responsibility。我觉得它就是通过引用来决定下一个处理单位的.
使用这个模式接偶发送者和调用者之间的关系,也就是说发送者无需知道当前链上的那个对象进行处理。这样系统可以在不影响客户调用的情况下动态组织链和分配责任。
看了3种方式的演示后,比如例子中:
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);
}
}
}
其中方法handleRequest里的实现我始终是不解?
顺便问问BANQ 在这个COR中,如果我增加一种处理format是不是应该增加一个formatHandler和一个formatRequest?
当我处于客户端调用的时候
问题是当我生成ConcreteHandler 类实例时候必然要给 他传 下一个的处理对象?那不是跟我上面说的概念相互矛盾么?
莫非我太局限于当前实例的代码?但是我怎么也明白不过来COR带来的
【发送者无需知道当前链上的那个对象进行处理。这样系统可以在不影响客户调用的情况下动态组织链和分配责任】
可能我的表达让大家会有误解,希望高人来解道啊!天天在线等...谢谢大家了