Шаблон командования реализован с некоторыми ошибками?

Вот В русскоязычной ссылке на Википедию есть пример реализации Command Design Pattern на C ++. Как я понимаю из реализации по сравнению с диаграммой классов UML, я вижу, что:

  1. Класс Document является Invoker на диаграмме
  2. Класс Command — это команда на диаграмме
  3. класс InsertCommand является ConcreteCommand в диаграмме
  4. класс Receiver — это получатель на диаграмме

Также, как видно из диаграммы, Invoker объединяет Command. Но в нашем случае класс Document не объединяет Команду. Это ошибка? Или это вариант шаблона командования? Насколько строго следует следовать UML-диаграмме при разработке конкретного шаблона?

0

Решение

Наименования для примера C ++ не так хороши, я понимаю их следующим образом:

  • Document это Receiverобъект для применения команд
  • Receiver класс действует как Invoker с точки зрения предоставленной UML диаграмма.
  • main метод является Client

Вы можете взглянуть на пример Java, он более чистый.

1

Другие решения

Других решений пока нет …