Представьте, что у вас есть классы Car
и Engine
:
public class Car {
private Engine engine = new Engine(); //or inject it externally
public void start() {
engine.start();
}
}
В этом примере Car
делегирует базовый Engine
. Пользователь автомобиля не может запустить двигатель напрямую (если он не механик). Но он может сказать машине, чтобы начать, и машина, в свою очередь, говорит, чтобы двигатель запустился.
Вы хотите использовать его всякий раз, когда используете композицию объектов, и вам нужно использовать метод одного из составных объектов. В этом случае вы создаете метод, который делегирует его.