我们正在设计一个新组件并考虑使用命令设计模式。
我们有两种主要类型的命令将实现我们的IOurCommand
接口(其他命令将从它们继承)。
问题是第一个命令CommandDoUpdates
不需要返回任何值,而第二个命令CommandGetData
是获取数据,所以它需要返回List
一些对象的a( List<DataRow>
)
我们正在考虑处理这种情况的事情:
- 返回一个 Class ,其中包含有关操作成功的指示(奖励)和一个对象列表,对于所有
CommandDoUpdates
. - 保留
List
作为具体命令的成员 - 潜在的解决方案,但由于其他原因(浅拷贝与深拷贝等)使我们的生活更加艰难。 - 与 #1 相同,但在函数中返回一个基类,并且每个调用 calss 都必须将结果向下转换为具体类(向下转换不是一个好习惯,因为客户端需要知道实际返回值是什么)。
- 将命令分为两个不同的层次结构(一个返回值,一个不返回值),并使用两个不同的接收器 - 我真的不喜欢它,但它是一个选项。
这篇文章是关于命令是否应该返回值/状态的好读物。这是相关的,因为在 GoF 书中,命令设计模式不返回值。
我的实际问题是:
- 你能想出更好的解决方案吗?
- 选项 1,2 和 3 有什么优点或缺点,选项 4 有什么优点吗?
谢谢!