大话设计模式之职责链模式
什么是职责链模式?
China of Responsibility:使多个对象都有机会处理请求,从而避免请求的发送者和接受者之间的耦合关系。将这个对象连成一条链,并沿着这条链传递该请求,直到有一个对象处理它为止。
像这种情况在我们身边随处可见,比如,班里想申请一个教室举办元旦晚会,文艺委员不能自作主张使用某个教室,于是找到班长,班长要做的就是写申请,向负责人员申请,负责人批准以后才能使用教室,这一步步的过程就像是一条链,从某一点开始执行,不能通过的话就向后走,知道找到某一点能解决了问题才终止。问题只要解决了就达到了目的,不用考虑中间有多少人参与过,也就是只关心结果
此班学生的动机可以表示成如图:
职责链模式的优点:降低耦合度可简化对象的相互连接增强给对象指派职责的灵活性方便增加新的类职责链模式的缺点:请求到达末端也可能得不到处理代码调试时不太方便,可能会造成循环调用
何时使用职责链模式?有多个对象可以处理同一个请求,具体哪个对象处理该请求由运行时刻自动确定在不明确指定接受者的情况下,向多个对象中的一个提交一个请求可动态指定一组对象处理请求