Шаблон делегирования (Delegation Pattern) – это поведенческий шаблон проектирования, который позволяет объекту передавать выполнение определенных задач другому объекту (делегату) вместо того, чтобы выполнять их самому. Этот шаблон применяется, когда объект должен выполнять различные действия в зависимости от определенных условий или когда он хочет разделить функциональность между различными объектами.
Основные участники шаблона делегирования:
- Исходный объект (Delegator): Это объект, который делегирует выполнение определенных задач другому объекту. Исходный объект не обязательно знает о всех деталях реализации делегата.
- Делегат (Delegate): Это объект, который фактически выполняет задачи, делегированные исходным объектом. Делегат обязан реализовывать интерфейс или методы, необходимые для выполнения этих задач.
Пример использования шаблона делегирования на языке Python:
python
class Worker: def __init__(self, name): self.name = name def do_work(self): pass class Manager: def __init__(self, worker): self.worker = worker def manage(self): print(f"Менеджер {self.name} делегирует задачу сотруднику {self.worker.name}") self.worker.do_work() class Engineer(Worker): def do_work(self): print(f"{self.name} выполняет инженерные задачи") class Designer(Worker): def do_work(self): print(f"{self.name} создает дизайн") engineer = Engineer("Иван") designer = Designer("Мария") manager1 = Manager(engineer) manager2 = Manager(designer) manager1.manage() # Вывод: Менеджер делегирует задачу сотруднику Иван manager2.manage() # Вывод: Менеджер делегирует задачу сотруднику Мария
В этом примере классы Engineer
и Designer
выполняют конкретные задачи, а класс Manager
делегирует задачи соответствующим сотрудникам, используя шаблон делегирования.
Шаблон делегирования полезен, когда нужно обеспечить гибкость и расширяемость кода, разделяя его на более мелкие и отдельные компоненты. Это также помогает соблюдать принцип единственной ответственности (Single Responsibility Principle, SRP) и избегать чрезмерной сложности в классах.