#Head First. Паттерны проектирования
Код и упражнения из книги https://www.litres.ru/elizabet-robson/head-first-patterny-proektirovaniya-39123671/
Выделите аспекты приложения, которые могут изменяться, и отделите их от тех, которые всегда остаются постоянными.
Программируйте на уровне интерфейса, а не на уровне реализации.
Отдавайте предпочтение композиции перед наследованием.