Заместитель (Proxy)

Материал из Вики ИТ мехмата ЮФУ
Версия от 11:47, 8 августа 2014; Admin (обсуждение | вклад) (Описание)

Перейти к: навигация, поиск

К основной странице курса

Другое название

Суррогат (Surrogate)

Назначение

Заместитель ведет себя точно так же как и основной объект, выполняя при необходимости его инстанцирование.

Описание

В некоторых ситуациях расходы на создание и инициализацию объекта можно отложить до тех пор пока он действительно понадобится. Особенно заметен выигрыш - для тяжеловесных объектов, которые разумно создавать "по требованию".

В этом случае вместо самого объекта инстанцируется его Заместитель, а когда с объектом становится необходимо работать, инстанцируется сам объект.Например, в текстовом документе сбольшим количеством тяжеловесных изображений нет необходимости при открытии документа открывать и отображать все изображения. Необходимость в отображении изображения возникает лишь при переходе к области документа, в которой это изображение расположено.

Заместитель следует интерфейсу основного объекта, хранит ссылку на него и инстанцирует его по требованию.

Использование

Заместитель используется в следующих ситуациях.

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

Реализация

Диаграмма классов

Файл:Common.png

Участники

Пример

Достоинства и недостатки

Варианты