Паттерны

Паттерны

Юрий Логинов

Стратегия

Позволяет определить семейство схожих алгоритмов, с целью последующей инкапсуляции их в отдельных классах, закрытые интерфейсом. В процессе выполнения данные алгоритмы можно заменять "на лету".

Применять:

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

Плюсы:

  • Горячая замена алгоритмов "на лету".
  • Изолирует алгоритмы от других классов.
  • Уход от наследования.
  • Реализует принцип O/C

Минусы:

  • Усложняет программу за счет новых классов
  • Клиент должен понимать разницу между разными вариантами алгоритмов.


Декоратор

Позволяет добавлять объектам новую функциональность, оборачивая их в так называемые "обертки".

Применять:

  • Когда нужно добавить объекту обязанностей на лету, незаметно для кода, который их использует.
  • Когда нельзя расширить обязанности путем наследования (класс имеет ключевое слово final).

Плюсы:

  • Большая гибкость
  • Добавление обязанностей на лету
  • Можно добавлять комбинировать обязанности
  • Несколько мелких классов на все случаи жизни

Минусы:

  • Трудно конфигурировать большие комбинации
  • Может быть много мелких классов










Report Page