В программировании на компьютере шаблон proxy — это шаблон проектирования программного обеспечения . В своей наиболее общей форме proxy — это класс, функционирующий как интерфейс к чему-либо еще. Proxy может взаимодействовать с чем угодно: сетевым подключением, большим объектом в памяти, файлом или каким-либо другим ресурсом, который дорого или невозможно дублировать. Короче говоря, proxy — это объект-обертка или агент, который вызывается клиентом для доступа к реальному обслуживающему объекту за кулисами. Использование proxy может просто перенаправляться на реальный объект или может предоставлять дополнительную логику. В proxy может предоставляться дополнительная функциональность, например кэширование, когда операции над реальным объектом являются ресурсоемкими, или проверка предварительных условий перед вызовом операций над реальным объектом. Для клиента использование proxy-объекта похоже на использование реального объекта, потому что оба реализуют один и тот же интерфейс.
Шаблон проектирования Proxy [1] — один из двадцати трех известных шаблонов проектирования GoF , описывающих, как решать повторяющиеся проблемы проектирования для разработки гибкого и повторно используемого объектно-ориентированного программного обеспечения, то есть объектов, которые проще реализовывать, изменять, тестировать и повторно использовать.
Например, при доступе к конфиденциальным объектам должна быть возможность проверить, имеют ли клиенты необходимые права доступа.
Определите отдельный Proxy
объект, который
Subject
) иЭто позволяет работать через Proxy
объект для выполнения дополнительных функций при доступе к субъекту. Например, для проверки прав доступа клиентов, обращающихся к чувствительному объекту.
Чтобы действовать как замена субъекта, прокси должен реализовать Subject
интерфейс. Клиенты не могут сказать, работают ли они с субъектом или его прокси.
См. также класс UML и диаграмму последовательности ниже.
В приведенной выше диаграмме классов UML класс реализует интерфейс, чтобы он мог выступать в качестве замены объектов. Он поддерживает ссылку ( ) на замещенный объект ( ), чтобы он мог пересылать запросы к нему ( ). Proxy
Subject
Subject
realSubject
RealSubject
realSubject.operation()
Диаграмма последовательности показывает взаимодействия во время выполнения: Client
Объект работает через Proxy
объект, который управляет доступом к RealSubject
объекту. В этом примере Proxy
пересылает запрос в RealSubject
, который выполняет запрос.
В распределенной объектной коммуникации локальный объект представляет удаленный объект (тот, который принадлежит другому адресному пространству). Локальный объект является прокси для удаленного объекта, и вызов метода на локальном объекте приводит к удаленному вызову метода на удаленном объекте. Примером может служить реализация банкомата , где банкомат может хранить прокси-объекты для банковской информации, которая существует на удаленном сервере.
Вместо сложного или тяжелого объекта скелетное представление может быть выгодным в некоторых случаях. Когда базовое изображение имеет огромный размер, его можно представить с помощью виртуального прокси-объекта, загружая реальный объект по требованию.
Защитный прокси-сервер может использоваться для управления доступом к ресурсу на основе прав доступа.
{{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка )