我正在建立图表。一张图由相互链接的节点组成(实际上我亲爱的)。 为了给每个节点分配一个给定的行为,我实现了策略模式。影响表演的类型反射战略模式?
class Node {
public BaseNodeBehavior Behavior {get; set;}
}
因此,在应用程序的很多部分,我广泛使用类型反射来知道节点是哪种行为。
if (node.Behavior is NodeDataOutputBehavior)
workOnOutputNode(node) ....
我的图可以得到数千个节点。
- 是类型反射对性能有很大影响吗?
- 我应该使用其他策略模式吗?
我使用策略,因为我需要行为继承。例如,基本上,行为可以是数据或操作员,数据行为可以是IO,Const或Intermediate,最后IO行为可以是输入或输出。因此,如果我使用枚举,我不能测试节点行为是数据类型,我需要测试它是[输入,输出,常量还是中级]。如果后来我想添加另一种Data类型的行为,那我就搞定了,每个数据测试方法都需要改变。
+1谢谢你,帮了不少忙! :-) – 2010-04-30 09:12:23
我会说这是类型反射/类型识别... 无论如何,这不是一个好的面向对象设计。如果可能,你应该使用多态。例如。如果您基于节点类型打印节点,则应该将打印添加到节点接口,并让所有节点都实现该接口,但每种具体类型/策略都是这样。 – 2010-04-30 10:23:11
我开始我的应用程序通过使用多态与节点,有一个DataNodes,DataIONodes等等等......但我想要从DataIntermediate节点更改为DataOutput?它的一团糟,每个父母/孩子必须交换一个新节点,必须复制属性等等。这就是为什么策略模式代表:能够轻松地改变对象行为。 – 2010-04-30 11:09:01