Here в русской ссылке Википедии есть пример реализации C++ Command Design Pattern на C++. Как я понимаю, от реализации по сравнению с классом UML диаграммы, я вижу, что:Шаблон проектирования команд реализован с некоторыми ошибками?
- Класс документа является Чешуи на диаграмме
- класса это команда на диаграмме
- класс InsertCommand является ConcreteCommand в диаграмма
- класс приемника является приемник на диаграмме
Кроме того, как видно из диаграммы, Invoker агрегатов Command. Но в нашем случае класс Document не объединяет команду. Это ошибка? Или это вариант шаблона команды? Насколько строго следует использовать UML-диаграмму в целом для проектирования конкретного шаблона?
Вам не обязательно быть строгим. Шаблоны описывают часто повторяющиеся проекты, а не предписывают дизайн. –
Если документ не знает (как вызвать) команды (ов), как документ может вызвать их выполнение? (... может быть, другой класс - настоящий invoker.) – Beachwalker
Я не понимаю, например, правильно ли, что Class Document является Invoker? – Narek