Книга: Погружение в Паттерны Проектирования
Назад: Цепочка обязанностей
Дальше: Итератор
.

Во-вторых, копии состояния могут занимать довольно много оперативной памяти. Поэтому иногда можно прибегнуть к альтернативной реализации, когда вместо восстановления старого состояния, команда выполняет обратное действие. Недостаток этого способа в сложности (а иногда и невозможности) реализации обратного действия.

Шаги реализации

  1. Создайте общий интерфейс команд и определите в нём метод запуска.

  2. Один за другим создайте классы конкретных команд. В каждом классе должно быть поле для хранения ссылки на один или несколько объектов-получателей, которым команда будет перенаправлять основную работу.

    Кроме этого, команда должна иметь поля для хранения параметров, которые нужны при вызове методов получателя. Значения всех этих полей команда должна получать через конструктор.

    И наконец, реализуйте основной метод команды, вызывая в нём те или иные методы получателя.

  3. Добавьте в классы отправителей поля для хранения команд. Объект-отправитель должен принимать готовый объект команды извне через конструктор, либо через сеттер команды.

  4. Измените основной код отправителей так, чтобы они делегировали выполнение действия команде.

  5. Порядок инициализации объектов должен выглядеть так:

    • Создаём объекты получателей.
    • Создаём объекты команд, связав их с получателями.
    • Создаём объекты отправителей, связав их с командами.

Преимущества и недостатки

Отношения с другими паттернами

Назад: Цепочка обязанностей
Дальше: Итератор

asd
asdda