Skip to content
Pandas edited this page Jun 18, 2017 · 1 revision

Назначение

Является суррогатом другого объекта и контролирует доступ к нему.

Применимость

  • Удаленный заместитель предоставляет локального представителя вместо объекта, находящегося в другом адресном пространстве;
  • Виртуальный заместитель создает «тяжелые» объекты по требованию.
  • Защищающий заместитель контролирует доступ к исходному объекту.
  • «Умная» ссылка - это замена обычного указателя. ###

Структура

Imgur

Участники

  • Proxy - заместитель: хранит ссылку, которая позволяет заместителю обратиться к реальному субъекту. Объект класса Proxy может обращаться к объекту класса Subject, если интерфейсы классов RealSubject и Subject одинаковы; предоставляет интерфейс, идентичный интерфейсу Subject, так что заместитель всегда может быть подставлен вместо реального субъекта; контролирует доступ к реальному субъекту и может отвечать за его создание и удаление;
  • Subject - субъект: определяет общий для RealSubject и Proxy интерфейс, так что класс Proxy можно использовать везде, где ожидается RealSubject;
  • RealSubject - реальный субъект: определяет реальный объект, представленный заместителем.

Отношения

Proxy при необходимости переадресует запросы объекту RealSubject. Де тали зависят от вида заместителя.

Результаты

С помощью паттерна заместитель при доступе к объекту вводится дополнительный уровень косвенности. У этого подхода есть много вариантов в зависимости от вида заместителя:

  • Удаленный заместитель может скрыть тот факт, что объект находится в другом адресном пространстве;
  • Виртуальный заместитель может выполнять оптимизацию, например создание объекта по требованию;
  • Защищающий заместитель и «умная» ссылка позволяют решать дополнительные задачи при доступе к объекту.

Clone this wiki locally