C# 将命令模式调整为创建多个API连接的单例

C# 将命令模式调整为创建多个API连接的单例,c#,java,oop,design-patterns,C#,Java,Oop,Design Patterns,一个队友为一个服务编写了一个连接器,该服务实例化了一个API连接,并在整个代码中继续使用该连接。事实证明,这些连接器的创建方式实际上是单例的。因此,一旦需要不止一个连接,我们就会遇到很多麻烦。我正要重写连接器,但另一位队友说这是一个使用命令模式的好地方 不幸的是,我能在网上找到的唯一的例子是那些有问题的命令与撤销东西或菜单有关的例子。在这种情况下,调用程序、接收器、命令等映射到什么样的功能 Pattern Term My domain Invoker -> Connecti

一个队友为一个服务编写了一个连接器,该服务实例化了一个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连接对象移动到它自己的类中,而不是作为连接器单例上的一个属性,然后使用适当的cred更新该连接对象并将其传递给每个GetSomeData方法。我觉得命令模式有点过分了,这是不是错了


对于这个有点脱节的问题,很抱歉,它归结为:什么命令模式概念映射到我当前关注的问题上,以及这样做的好处是什么

在我看来,你的队友似乎误解了什么

使用命令模式除了创建要发送连接的任务/数据``队列之外,并不能真正帮助您。在这种情况下,“撤消”没有任何用处,但实际上可以使用Memento模式序列化/保存每个命令,并创建连接发送的每个命令的日志

我认为您的合作伙伴没有注意到,如果您的服务器能够支持并发调用,那么多个连接将并发

因此,要么您的合作伙伴遗漏了什么,要么您的服务器无法处理并发性。
在您的情况下,命令模式将仅用于创建日志,并与失败/成功的memento store/restore命令一起使用

我认为命令模式在这里不适用,但我可能有误解。询问您的队友他将如何使用命令模式,并让我们知道,以便我们可以对此进行评论!