哪个UML图对于责任链模式是正确的?

时间:2011-01-24 11:20:40

标签: c# c++ design-patterns

我正在尝试为责任链模式绘制UML图。 我指的是网站http://www.vincehuston.org/dp/chain.html

http://www.dofactory.com/Patterns/PatternChain.aspx

在Vincehuston图中,基类有一个自循环,因为Base类需要有一个指向下一个处理程序对象的指针。

在dofactory图中,Derived类中存在基类的聚合。

你能告诉我哪一个是正确的吗? DoFactory主要基于C#进行解释,它有什么区别吗?

1 个答案:

答案 0 :(得分:0)

我在两个解释之间看到的唯一区别是指向下一个处理程序的指针是(基本处理程序类或具体实现),它应该在基类上表示,因为它将在每个实例中继承。

所以从我的观点来看,vincehuston表示更准确。

如果你看一下dotfactory中的实际实现,你会看到,尽管有UML表示,它仍然将继承者放在基类中。

编辑:实现的不同之处在于通过向后继者提供和实例来调用后继者,或者调用后继者的基本方法。在这两种情况下,方法或成员都是从基类继承的,因此聚合是错误的,当您使用继承的成员或方法时,不要定义聚合。