app开发者平台在数字化时代的重要性与发展趋势解析
700
2022-10-12
Aha!设计模式(74)-职责链模式(2)
适用性
职责链模式适用于以下情况:
•有多个对象可以处理一个请求,哪个对象处理该请求由对象自己决定。
•某个对象在处理请求的同时,也可以决定是否向后续的对象传递该请求。
结构
参与者
• Handler — 定义一个处理请求的接口。 — 管理后继节点(多个节点级联之后形成后继链条) • ConcreteHandler — 可以选择是否处理收到的请求。 — 可以选择是否将请求传递给后继者。 — 一般来讲处理和向后续传递是互斥的,但这并不是职责链本身的要求。
• Client
—请求的提出者。
一种可能的对象结构如下图:
需要注意的是:实际的应用中,只要请求的传播途径形成链式结构即可。数据结构本身不一定如此。
协作
客户提出的请求沿着链状途径传播,链上的节点决定是处理还是向后传播该请求。
效果
请求的提出者不用关心哪个对象会处理请求,甚至不需要知道是否有对象会处理该请求。
是否处理某个请求由传播链上的节点决定。因此可以通过改变传播途径上节点的处理内容或者直接替换节点来改变请求的处理过程。而且无论哪种方式都可以在程序运行时完成。
虽然职责链模式可以极大地提高请求处理的灵活性,但是这种灵活性的反面是就是不确定性。客户在发出请求的时候甚至不知道是否有对象会处理该请求。如果某些请求必须要处理,就需要在生成数据结构时保证这一点。当然了,实际上是否有对象处理该请求是可以通过返回值来确认的。
觉得本文有帮助?请分享给更多人。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~