Предпочитайте композицию наследованию
Предпочитайте агрегацию композиции.
Наследование более жесткая связь, чем композиция.
Если наследование можно выразить словом «является» (автомобиль является транспортом), то композицию — словом «состоит из» (автомобиль состоит из двигателя, колес, ...).
Этот принцип распространяется и на агрегацию — более свободный вид композиции, когда два объекта являются равноправными, и ни один из них не управляет жизненным циклом другого. Оцените разницу: автомобиль содержит и водителя, но тот может выйти и пересесть в другой автомобиль или вообще пойти пешком самостоятельно.
https://metanit.com/sharp/patterns/1.2.php
Наследование:
- Мурка является кошкой.
Композиция:
- Унверситет состоит из кафедр.
- Контейнер состоит из элементов. Элементы могут существовать только как часть контейнера.
Агрегация:
- Кафедра содержит профессоров.
- Контейнер содержит элементы. Элементы могут существовать отдельно.
- Ведущий объект знает о ведомых объектах и содержит из.
Зависимость:
- Ведомый объект может быть изменен, если будут изменения в ведущем объекте.
Ассоциация:
- Один объект знает о существовании другого объекта.
- Ассоциативный массив например.
- Один класс имеет поле, в котором хранится экземпляр другого класса.
Реализация:
- Класс реализует элементы интерфейса.
Зависимость (самая слабая связь)
Ассоциация - Реализация
Агрегация - Наследование
Композиция (самая сильная связь)
Например можно использовать паттерн Стратегия.