Паттерн Стратегия
Создание интерфейса, от которого мы производим наследование
Определяем интерфейс, содержащий метод, который будут реализовывать разные стратегии.
Интерфейс позволяет легко заменять алгоритмы без изменения основного кода.
Каждый интерфейс отвечает за отдельное поведение (например, кряканье, полет, ходьбу).
Реализуем отдельные классы и в них методы с одинаковыми именами, но разными реализациями в зависимости от логики программы
Создаем классы, которые реализуют интерфейс.
В каждом классе прописывается своя версия метода.
Можно добавлять новые стратегии без изменения существующего кода.
Создаем контекст по которому для реализации патерна
Контекст (основной класс) использует стратегию и делегирует ей выполнение метода.
В классе есть поле для хранения стратегии и методы для ее изменения.
Позволяет динамически изменять поведение объекта в процессе работы программы.
Выбор метода в основной программе (Под основной программой автор имеет ввиду метод main() со всей реализацией интерфейсов, классов, методов и другого)
В Main() создаем объект и назначаем ему стратегию.
Можно менять стратегию на лету, вызывая соответствующий метод.
Позволяет легко управлять поведением объекта без изменения его кода.