Шаблон проектирования "Заместитель" (Proxy)
Proxy — это структурный паттерн проектирования, предоставляющий объект, который, в свою очередь, контролирует доступ к другому объекту путем перехвата всех вызовов. Также можно сказать, что шаблон "Заместитель" выполняет функцию контейнера. Рассмотрим примеры его реализации и использования.
Но для начала -- случай из жизни. Представьте себе дверь, которую можно открыть лишь картой доступа либо нажатием кнопки.
Главная функциональность двери — это ее открытие, а заместитель, который добавлен поверх (кнопка, карт-ридер), отвечает за безопасность и расширяет функциональность. Иными словами, с помощью Proxy-шаблона класс станет отображать функциональность другого класса.
Для наилучшего понимания перейдем к коду. Итак, существует интерфейс Door и реализация этого интерфейса:
Также у нас существует заместитель Security, обеспечивающий защиту любых дверей:
Ну а общий пример имплементации выглядит так:
Также вам может быть интересен пример имплементации на Java.
По материалам статьи «Design Patterns for Humans».