gpt4 book ai didi

oop - 为什么我要使用责任链而不是装饰器?

转载 作者:行者123 更新时间:2023-12-02 14:18:16 24 4
gpt4 key购买 nike

我正在阅读 Chain of Responsibility模式,我很难想象一个场景,当我更喜欢使用它而不是 decorator 时.

你觉得怎么样? CoR 有特殊用途吗?

最佳答案

您可以在任何时候打破链条,这一事实将责任链模式与装饰者模式区分开来。装饰器可以被认为是一次性执行,无需与其他装饰器进行任何交互。链中的链接可以被认为是一次执行一个链接,因为它们每个都依赖于前一个链接。

当您可以将程序概念化为由链接组成的链时,请使用责任链模式,其中每个链接都可以处理请求或将其传递到链上。

当我使用 Win32 API 时,有时需要使用它提供的 Hook 功能。 Hook Windows 消息大致遵循责任链模式。当您 Hook 诸如 WM_MOUSEMOVE 之类的消息时,您的回调函数将被调用。将回调函数视为链中的最后一个环节。链中的每个链接都可以决定是丢弃 WM_MOUSEMOVE 消息还是将其沿链向上传递到下一个链接。

如果在该示例中使用了装饰器模式,您将收到 WM_MOUSEMOVE 消息的通知,但您将无法阻止其他钩子(Hook)也处理它。

使用命令链模式的另一个地方是游戏引擎。同样,您可以 Hook 引擎函数、事件和其他内容。对于游戏引擎,您不想简单地添加功能。您想要添加功能并阻止游戏引擎执行其默认操作。

关于oop - 为什么我要使用责任链而不是装饰器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/747913/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com