This repository has been archived on 2022-11-20. You can view files and clone it, but cannot push or open issues or pull requests.
patterns/strategy/README.md

1.7 KiB
Raw Blame History

Стратегия

Поведенческий паттерн проектирования, который определяет семейство схожих алгоритмов и помещает каждый из них в собственный класс, после чего алгоритмы можно взаимозаменять прямо во время исполнения программы.

Инкапсуляция алгоритма в объект — это назначение паттерна Стратегия. Использует композицию. Определяет семейство алгоритмов и обеспечивает их взаимозаменяемость. Инкапсуляция позволяет легко использовать разные алгоритмы на стороне клиента.

Код

Каждая утка СОДЕРЖИТ экземпляры FlyBehavior и Quack­Behavior, которым делегируются выполнение соответствующих операций. Подобные связи между двумя классами означают, что используется механизм композиции. Поведение не наследуется, а предоставляется правильно выбранным объектом.

Принципы

  • Инкапсулировать то, что изменяется
  • Отдавать предпочтение композиции перед наследованием
  • Программировать на уровне интерфейсов, а не реализации

Схемы

scheme-1