一位队友编写了一个连接到服务的连接器,该连接器实例化了 API 连接,并在整个代码中继续使用相同的连接。事实证明,这些连接器的创建方式实际上是单例。因此,一旦需要多个连接,我们就会遇到很多麻烦。我正要重写连接器,但另一位队友说这是使用命令模式的好地方。
不幸的是,我在网上能找到的唯一示例是相关命令与撤消操作或菜单相关的示例。在这种情况下,调用者、接收者、命令等映射到什么样的功能?
Pattern Term My domain
Invoker -> Connection instance
Receiver -> ?
Command(s) -> GetSomeData(userInfo, creds, constraints), GetSomeOtherData(userInfo, creds, constraints), ...
User -> Connector singleton?
Invoker -> Also Connector singleton?
我打算将 API Connection 对象移动到它自己的类中,而不是成为 Connector 单例上的属性,然后使用正确的凭据新建
该 Connection 对象并将其传递每个 GetSomeData 方法。我发现命令模式的东西有点矫枉过正是错误的吗?
很抱歉这个有点脱节的问题,它归结为:什么命令模式概念映射到我当前关注的问题,以及这样做的好处是什么?
请您参考如下方法:
对我来说,你的队友似乎误解了一些东西。
除了创建一个“任务/数据”队列来发送连接之外,使用命令模式并不会真正帮助您。在这种情况下,撤消是没有用的,但您实际上可以使用备忘录模式序列化/保存每个命令,并创建一个日志,记录发送的每个命令抛出的连接。
我认为您的伙伴没有注意到,如果您的服务器能够维持并发调用,则多个连接将是并发的。
因此,要么您的合作伙伴错过了某些内容,要么您的服务器无法处理并发。 在您的情况下,命令模式仅用于创建日志并使用已失败/成功的备忘录存储/恢复命令