为两个类别的对象创建设计模式,两个类别都覆盖所有对象

时间:2015-05-14 23:46:37

标签: class design-patterns class-diagram

我想为以下问题设计一个类图:

从我的域中的一个角度来看,我的元素(" ELEMENTs")是输入元素或输出元素,但不是两者。

从另一个角度来看,它们是节点箭头(但不是两者)。

例如, e1 元素只能出现以下情况之一:

1)是一个输入节点

2)是一个输出节点

3)是输入箭头

4)是输出箭头。

我想在不使用约束(如OCL)

的情况下编码

到目前为止,我已经提出了以下设计图(灰色类是抽象的): enter image description here

我的问题: 是否有更高效的模式可以更准确地适应这个问题,没有多重继承?

1 个答案:

答案 0 :(得分:2)

根据您的要求并根据我的理解,我宁愿使用Strategy模式而不是继承。所以这将是两种不同的行为

  1. 输入/输出
  2. 节点/箭头(可以全部变形)
  3. 元素将包含与这两种行为相关的所有函数(因为它具有这两种行为)。所以图表就像这样(元素仅指IShapeBehavior和IInputOutputBehavior)

    enter image description here