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

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

  • Используйте наследование вместо композиции для моделирования четких отношений. Во-первых, обоснуйте связь между производным классом и его базой. Затем измените отношения и попытайтесь их оправдать. Если вы можете оправдать отношения в обоих направлениях, то вам не следует использовать наследство между ними.

  • Используйте наследование вместо композиции, чтобы использовать как интерфейс, так и реализацию базового класса.

  • Используйте наследование вместо композиции для предоставления функций смешивания (mixin) нескольким несвязанным классам, когда может существовать только одна реализация этой функции.

  • Использование композиции вместо наследования для моделирования имеет отношение, которое использует реализацию класса компонента.

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

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

  • Используйте композицию вместо наследования, чтобы включить изменения поведения во время выполнения, не затрагивая существующие классы.

Last updated