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