Заместитель (Proxy) — различия между версиями

Материал из Вики ИТ мехмата ЮФУ
Перейти к: навигация, поиск
(Описание)
(Диаграмма классов)
Строка 24: Строка 24:
 
=== Реализация ===
 
=== Реализация ===
 
==== Диаграмма классов ====
 
==== Диаграмма классов ====
[[Изображение:Common.png]]
+
[[Изображение:ProxyCommon.png]]
  
 
==== Участники====
 
==== Участники====

Версия 11:53, 8 августа 2014

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

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

Суррогат (Surrogate)

Назначение

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

Описание

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

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

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

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

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

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

Реализация

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

ProxyCommon.png

Участники

Пример

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

Варианты