Отношения заместителя с другими паттернами
- Заместитель предоставляет классу тот же интерфейс, что и реальный объект. Адаптер предоставляет альтернативный интерфейс, а декоратор — расширенный интерфейс.
- Фасад похож на заместитель тем, что замещает сложную подсистему и может сам её инициализировать. Но в отличие от фасада заместитель имеет тот же интерфейс, что и его служебный объект, благодаря чему их можно взаимно заменять.
- Декоратор и заместитель имеют схожие структуры, но разные назначения. Сходство в том, что оба они построены на принципе композиции и делегируют работу другим объектам. Но если заместитель сам управляет жизнью сервисного объекта, то обёртывание декоратора контролируется клиентом.
Например, такой веб-сервер, как Nginx, может выполнять функции заместителя для сервера вашего приложения:
- Он предоставляет контролируемый доступ к серверу приложения.
- Может обеспечить ограничение трафика.
- Может выполнять кеширование запросов.
server.go: сервис
nginx.go: заместитель
application.go: реальный сервис
main.go: клиентский код
Пришло время поработать с кодом!
output.txt: результат выполнения
Оригинал статьи доступен по ссылке (может потребоваться VPN).