Паттерн "Стратегия"



Представьте что у вас есть класс фермы Farm, который обрабатывает классы Cow, Pig и Chicken. Чтобы хранить их в классе нам нужен массив для них, но в статической Java невозможно сделать массив для разных типо.



Для решения этой ситуации создают интерфейс Animal, который будет имплементироваться всеми классами животных.



Далее в классе Farm делаем массив типо Animal[], который может хранить в себе любое животное. Это и есть паттерн стратегия.