背景
下面的代码段不是责任链的经典实现。仍然旨在解决“ 避免请求的发送方和接收方之间的耦合”这一问题。在不影响呼叫者的情况下,“链”仍然可以“增长”和“收缩”。
//Controller
public Output handleRequest(Input input){
Output output;
for(Strategy strategy : strategyList){
StrategyOutput strategyOutput = strategy.execute(input);
//modify the input if needed based upon the emitted output.
}
return output;
}
//Strategy1
public Class Strategy1 implements Strategy{
}
//Strategy2
public Class Strategy2 implements Strategy{
}
据我了解,与经典责任链相比,关注点分离在这里要干净得多。分隔为:
- 单独的控制器(协调链)。
- 单独的策略集。一个策略只会困扰自己,而不必费心调用其他策略(据说是责任链中的“链环”)。
问题:
- 与经典责任链相比,此方法是否有任何主要缺点?