Дизайн шаблона подходит для случая - PullRequest
1 голос
/ 24 октября 2019

У меня есть UML-диаграмма ниже (извините, если на картинке мало информации).

enter image description here Итак, у меня есть

IRE Интерфейс, который реализован классом RE. Интерфейс IRD, который реализуется классом RD (и этот последний расширяет RE). Интерфейс IRM, который реализуется классом RM (и последний расширяет RE).

Так есть ли подходящий шаблон проектирования для представления этого дигарама?

Заранее спасибо.

1 Ответ

4 голосов
/ 25 октября 2019

Это неправильный подход

Прежде всего шаблоны проектирования не представляют и не реализуют диаграммы классов UML. И наоборот: диаграмма UML представляет структуру шаблона проектирования.

По словам Кристофера Александра, источник вдохновения Gamma et al. шаблон проектирования:

описывает проблему, которая возникает снова и снова в нашей среде, а затем описывает ядро ​​решения этой проблемы таким образом, что вы можете использовать это решение миллион разбольше никогда не делая это одинаково дважды

Диаграмма классов UML представляет структуру решения. Это не говорит о том, какую проблему пытается решить решение, и как оно решается. Кроме того, некоторые шаблоны проектирования имеют очень похожую структуру, и только поведение или намерение могут помочь изменить ситуацию.

Структурное сходство

Как говорится, если ваша диаграмма должна представлять шаблон проектирования, но вы не помните, какой именно, это, вероятно, адаптер , а точнее вариант, основанный на наследовании:

  • RE_Impl является adaptee, то есть классом с существующим интерфейсом, который необходимо адаптировать
  • IRM и IRD - целевые интерфейсы, к которым должен быть адаптирован RE_Impl.
  • RM_Impl и RD_Impl - это адаптеры, которые обеспечивают адаптацию.

Однако это только предположение, поскольку шаблон не определяется его структурой. Назначение адаптера - преобразовать один интерфейс в другой. Итак, если интерфейсы IRM и IRD предлагают что-то совершенно не связанное с IRE, это вообще не будет адаптером.

...