2013-07-21 81 views
0

我正在Windows 7上构建一个WPF图编辑器。 尽管我正在学习重要的设计技术(TDD,Prism,MVVM,依赖注入),但我理解了一些已建立的设计模式,这里是我的问题:如何设计/执行命令模式时,命令可变数量的参数?

总的来说,这些命令会有不同数量和类型的参数组合。 (为了清楚起见,每个命令具有固定的参数集) 例如,下文中,所有这些都可以用鼠标来执行:对新的节点参数=位置(:

命令创建新的节点点)

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

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

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

客户端将这些参数传递给Command主管的首选方式是什么?

(我在这里打猎和其他地方,但没有发现问题或答案,所以明确框架,并准备被重定向到的东西我找不到:-)

[编辑]我没有足够明确的:

,如果我做一个的CommandFactory返回命令,如果它被传递命令类型(枚举,说)参数集对象......还是应该只通过命令类型,从而使客户端随后使用参数填充命令?

回答

0

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

你在说什么?只需传入具有所有“参数”参数的属性的类即可。

(如果有什么这听起来像你需要一个state machine。)

+0

我看不出如何做到这一点,接收方可以高效地验证给定命令类型的参数集 - 即不显式检查传递的每个值的类型。 或者[刚才发生在我身上]我是否定义了一个特定于每个命令的参数类,但绑定了一个用于检索单个值的接口? – user167471

+0

我将不得不刷新状态机:-) – user167471