Урок 6: Композиция вместо наследования
public class Car : Engine выглядит как удобный короткий путь — пока вы не обнаруживаете, что каждый метод двигателя протекает на автомобиль, каждое изменение двигателя ломает автомобиль, а автомобиль с двумя типами двигателей становится невозможным. В этом уроке мы заменяем наследование полем: автом
Композиция — это как ящик с инструментами: вместо того чтобы родиться «человеком-молотком», профессионал держит молоток и меняет его при необходимости. Наследование приваривает молоток к руке навсегда.
- композиция вместо наследования
- Когда реальное отношение — has-a, держите объект как приватное поле и делегируйте ему — вместо того чтобы наследоваться и тащить за собой хрупкую иерархию и протекающий API.
- отношение has-a
- Отношение, в котором объект держит другой объект как поле и использует его — в противоположность is-a, где класс наследуется и заявляет, что является разновидностью своей базы.