当命令具有可变数量的参数时,如何设计/实现命令模式?

时间:2013-07-21 06:16:19

标签: wpf design-patterns mvvm icommand

我正在Windows 7上的WPF中构建一个图编辑器。 虽然我即将学习重要的设计技术(TDD,Prism,MVVM,依赖注入),虽然我理解了一些已建立的设计模式,但这是我的问题:

作为一个整体,命令将具有不同的数字和类型的参数组合。 (要清楚,每个命令都有一组固定的参数) 例如,以下所有内容都可以使用鼠标执行:

命令创建新节点:参数=新节点的位置(点)

命令将节点移动到新位置:parameters =节点(graphNode),新位置(点)

命令连接两个节点:参数=从节点(graphNode)到节点(graphNode),边缘类型(GraphEdgeType)

我应该如何应用工厂或抽象工厂模式来最好地封装这些命令?

客户端将这些参数传递给Command执行程序的首选方法是什么?

(我已经在这里和其他地方寻找但未找到明确陷害的问题或答案,并准备重定向到我找不到的东西: - )

[编辑]我不够明确:

如果我使 CommandFactory 返回命令,是否应该传递commandType(一个枚举,比如说)一个参数集对象......或者它应该只是传递了commandType,以便客户端随后使用参数?

来填充命令

2 个答案:

答案 0 :(得分:1)

我怀疑这https://cuttingedge.it/blogs/steven/pivot/entry.php?id=91(我在Command Pattern : How to pass parameters to a command?找到的)就是我正在寻找的东西,尽管我还没有理解它 - 它可能超越了我所设想的任何技术混乱但无法表达。

答案 1 :(得分:0)

  

我应该如何应用工厂或抽象工厂模式来最好地封装这些命令?

你正在谈论什么?只需将具有所有“参数”属性的类作为参数传递。

(如果有任何声音,您需要state machine。)