JavaRush /Java блог /Random /Паттерн (Шаблон) Делегирования
Нина Можарская
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
А в каких случаях он может быть полезен? Почему бы просто не использовать класс А?