gpt4 book ai didi

design-patterns - 命令设计模式 - Invoker 是可选的吗?

转载 作者:行者123 更新时间:2023-12-03 12:24:44 26 4
gpt4 key购买 nike

命令设计模式中的调用者类是可选的吗?客户端需要为命令实例化具体命令和接收器。客户端是否总是需要实例化 Invoker 并将命令对象传递给 Invoker 对象。稍后,每当客户端需要执行命令时,客户端只需询问 Invoker 对象,Invoker 就会执行命令(可能立即执行,也可能将命令排队等待稍后执行)。

或者这是相反的方式?如果客户端需要同步执行命令,客户端将使用基类接口(interface)引用命令,但会实例化具体的命令和接收器。每当客户端需要执行命令时,客户端只会调用基类命令变量的执行方法?当需要一些额外的逻辑来执行命令时,Invoker 类将用于保留该额外的逻辑,并且客户端将与 Invoker 对象交互以执行命令?

最佳答案

命令模式的目的通常是 1)使一组不同的操作共享相同的类型,以便它们可以由相同的代码处理 2)将操作编码/创建与操作调用分开。目的 2 明确需要接收器。

如果您在创建后立即调用,或者如果 Reciever 扮演调用者的角色,则不存在单一用途、独立的调用者。这是否意味着没有调用者真的是一个哲学问题:)

这样看:你/可以/分开创建、调度和调用。这并不意味着您必须将它们实现为三个独立的类。它只是涉及命令模式生命周期的逻辑角色。

编辑:我猜单一责任原则认为你应该将它们分开,但有一种常识:)可以而且应该遵守本地条件。

关于design-patterns - 命令设计模式 - Invoker 是可选的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12879609/

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