Пользователь Нина Можарская
Нина Можарская
17 уровень
Киев

Паттерн (Шаблон) Делегирования

Статья из группы Random
Паттерн (Шаблон) Делегирования — рассмотрим на самом простом примере. Есть класс А с каким-то методом f. Класс А — это внутренний не статический класс класса My.

public class My{
   public static void main(String[]args){
      My test = new My();
      My.A a1 = test.new A();
      a1.f();
      My.B b = test.new B();
      b.f();
   }

class A{
   void f(){
      System.out.println("f");
  }
}
}
Затем выведем на консоль то, что делает метод f. Для этого в методе main создаем объект класса А и вызываем метод f. Теперь создадим класс B. Нам нужно, чтобы он делал то же, что и класс А, но дублировать код мы не будем и использовать наследование тоже не будем, а в классе В создадим объект класса А, а затем в методе класса В вызовем метод класса А.

class B{
   A a = new A();
   void f(){
      a.f();
   }
}
Класс В делегирует выполнение каких-то задач другому классу. В данном случае классу А.
Комментарии (10)
Чтобы просмотреть все комментарии или оставить свой,
перейдите в полную версию
MR 22 уровень, Харьков
8 июля 2020
My.A a1 = test.new A(); а без test работать не будет? Или будет? дикие для моего мозга конструкции
Maxim Belich 20 уровень, Минск
24 июня 2020
Если честно, то эту статью кое-как понял только после прочтения этой статьи . Как по мне здесь пример такой себе ...
17 октября 2018
Хотя бы проверила перед публикацией. Как А может быть внутренним для Му, если он вынесен за пределы Му?
Nikita Koliadin 40 уровень, Днепр
14 октября 2018
Хорошая статья. Только код отформатируйте пожалуйста!)
Сергеев Виктор 40 уровень, Санкт-Петербург Master
14 октября 2018
А в каких случаях он может быть полезен? Почему бы просто не использовать класс А?