我正在阅读 COR(责任链模式),我觉得它就像系统级别的 if else 或 switch case 一样简单,并且这种模式可以很容易地被类似的模式(如工厂模式或复合模式)替换。
有没有什么场景或例子可以证明只有 COR 可以解决这个问题?
提前致谢
我正在阅读 COR(责任链模式),我觉得它就像系统级别的 if else 或 switch case 一样简单,并且这种模式可以很容易地被类似的模式(如工厂模式或复合模式)替换。
有没有什么场景或例子可以证明只有 COR 可以解决这个问题?
提前致谢
一个典型的 COR 示例是在 WindowsForms 中处理HelpRequested事件。见源。
如果我们在特定控件上有事件处理程序,则处理它。否则,处理事件的请求将向上传递给父控件。
if else或switch case在这种情况下对我们没有帮助,因为子控件事先不知道谁将成为父母,也不知道他们中的哪一个可以处理显示帮助的请求。
正如亚历山大所说,但在更一般的层面上 - 每个处理管道都可以根据仅在运行时知道的信息动态添加、移动或删除处理器。
模式通常包含对手头问题的非常精确的描述(大多数人倾向于忽视这一点,而是依靠直觉认为模式与他们的上下文足够接近)。大多数时候,解决方案可以直接从问题表述本身推导出来。这将解决方案限制为几乎一种可行的形状,尽管一种模式有多种可能的实现。