Что такое делегирование? Когда я хотел бы использовать это? - PullRequest
6 голосов
/ 15 января 2011

В ООП упоминается термин делегирование. Как это моделируется в классе? Я искал на Yahoo и т.д., но получил ссылки на делегатов.

Ответы [ 2 ]

20 голосов
/ 15 января 2011

Представьте, что у вас есть классы Car и Engine:

public class Car {
   private Engine engine = new Engine(); //or inject it externally

   public void start() {
       engine.start();
   }
}

В этом примере Car делегирует базовый Engine. Пользователь автомобиля не может запустить двигатель напрямую (если он не механик). Но он может сказать машине, чтобы начать, и машина, в свою очередь, говорит, чтобы двигатель запустился.

Вы хотите использовать его всякий раз, когда используете композицию объектов, и вам нужно использовать метод одного из составных объектов. В этом случае вы создаете метод, который делегирует его.

0 голосов
/ 10 октября 2018

Делегирование похоже на наследование, за исключением того, что вместо class2, скопировав функции и переменные из class1, class2 просто получает class1, чтобы сделать это, а class2 фокусируется на выполнении и наличии дополнительных функций и переменных, которые вы передаете. Одним из очевидных преимуществ этого является то, что он экономит место на вашем компьютере.

...