Skip to content

Отношения заместителя с другими паттернами

  • Заместитель предоставляет классу тот же интерфейс, что и реальный объект. Адаптер предоставляет альтернативный интерфейс, а декоратор — расширенный интерфейс.                                               
  • Фасад похож на заместитель тем, что замещает сложную подсистему и может сам её инициализировать. Но в отличие от фасада заместитель имеет тот же интерфейс, что и его служебный объект, благодаря чему их можно взаимно заменять.
  • Декоратор и заместитель имеют схожие структуры, но разные назначения. Сходство в том, что оба они построены на принципе композиции и делегируют работу другим объектам. Но если заместитель сам управляет жизнью сервисного объекта, то обёртывание декоратора контролируется клиентом.

Например, такой веб-сервер, как Nginx, может выполнять функции заместителя для сервера вашего приложения:

  • Он предоставляет контролируемый доступ к серверу приложения.
  • Может обеспечить ограничение трафика.
  • Может выполнять кеширование запросов.

server.go: сервис

nginx.go: заместитель

application.go: реальный сервис

main.go: клиентский код

Пришло время поработать с кодом!

output.txt: результат выполнения

Оригинал статьи доступен по ссылке (может потребоваться VPN).