Композиция — это отношение между классами, где один класс содержит в себе экземпляры других классов. Это форма связывания объектов, где связанный объект (компонент) живет и умирает вместе с содержанием объектом.
Отличительные черты композиции:
Пример:
Класс Car может содержать экземпляр класса Engine:
kotlin
В данном примере Engine является компонентом Car. Engine не может существовать без Car. Когда объект Car уничтожается, его компонент Engine также перестает существовать (в контексте данного агрегата).
Композиция предпочтительнее наследования во многих случаях, поскольку она обеспечивает большую гибкость и меньшую связанность между классами. Она способствует принципу "программируйте на интерфейсах, а не на реализациях" и "составной функционал, а не наследование".