Какая UML-диаграмма является правильной для цепочки ответственности? - PullRequest
2 голосов
/ 24 января 2011

Я пытаюсь нарисовать UML-диаграмму для цепочки ответственности. Я имею в виду сайты http://www.vincehuston.org/dp/chain.html и

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

На диаграмме Винчестона в базовом классе есть цикл self, поскольку базовый класс должен иметь указатель на следующий объект-обработчик.

На диаграмме dofactory есть агрегация базового класса в производном классе.

Не могли бы вы сказать мне, какой из них является правильным? DoFactory в основном объясняет на основе C #, имеет ли это какое-то значение?

1 Ответ

0 голосов
/ 24 января 2011

Единственное различие, которое я вижу между этими двумя объяснениями, состоит в том, где указатель на следующий обработчик (базовый класс обработчика или конкретная реализация) должен быть представлен в базовом классе, поскольку он будет наследоваться в каждом экземпляре.

Так что, с моей точки зрения, представление Винчестона более точное.

Если вы посмотрите на фактическую реализацию в dotfactory, вы увидите, что, несмотря на представление UML, оно все равно помещает преемника в базовый класс.1005 *

Редактировать: Реализация отличается способом вызова преемника, предоставляя преемнику экземпляр и базовый метод для вызова преемника.В обоих случаях метод или член наследуются от базового класса, поэтому агрегация неправильная, вы не определяете агрегацию при использовании унаследованных членов или методов.

...