Паттерн (Шаблон) Делегирования — рассмотрим на самом простом примере. Есть класс А с каким-то методом 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();
   }
}
Класс В делегирует выполнение каких-то задач другому классу. В данном случае классу А.