# Наследование vs Композиция

Наследование лучше всего использовать для моделирования отношений, тогда как для составных моделей лучше использовать композицию.

* **Используйте наследование вместо композиции** для моделирования четких отношений. Во-первых, обоснуйте связь между производным классом и его базой. Затем измените отношения и попытайтесь их оправдать. Если вы можете оправдать отношения в обоих направлениях, то вам не следует использовать наследство между ними.
* **Используйте наследование вместо композиции**, чтобы использовать как интерфейс, так и реализацию базового класса.
* **Используйте наследование вместо композиции** для предоставления функций смешивания (**mixin**) нескольким несвязанным классам, когда может существовать только одна реализация этой функции.
* **Использование композиции вместо наследования** для моделирования имеет отношение, которое использует реализацию класса компонента.
* **Используйте композицию вместо наследования** для создания компонентов, которые могут повторно использоваться несколькими классами в ваших приложениях.
* **Используйте композицию вместо наследования** для реализации групп поведений и политик, которые можно применять взаимозаменяемо к другим классам для настройки их поведения.
* **Используйте композицию вместо наследования**, чтобы включить изменения поведения во время выполнения, не затрагивая существующие классы.

\
