stringtranslate.com

Прокси-шаблон

В компьютерном программировании шаблон прокси — это шаблон проектирования программного обеспечения . Прокси в самом общем виде — это класс, функционирующий как интерфейс к чему-либо еще. Прокси может взаимодействовать с чем угодно: сетевым соединением, большим объектом в памяти, файлом или каким-либо другим ресурсом, который дорого или невозможно дублировать. Короче говоря, прокси — это объект-обертка или агент, который вызывается клиентом для доступа к реальному обслуживающему объекту за кулисами. Использование прокси может просто перенаправляться к реальному объекту или может предоставлять дополнительную логику. В прокси может предоставляться дополнительная функциональность, например кэширование, когда операции над реальным объектом являются ресурсоемкими, или проверка предварительных условий перед вызовом операций над реальным объектом. Для клиента использование прокси-объекта похоже на использование реального объекта, потому что оба реализуют один и тот же интерфейс.

Обзор

Шаблон проектирования Proxy [1] — один из двадцати трех известных шаблонов проектирования GoF , описывающих, как решать повторяющиеся проблемы проектирования для разработки гибкого и многократно используемого объектно-ориентированного программного обеспечения, то есть объектов, которые проще реализовывать, изменять, тестировать и повторно использовать.

Какие проблемы может решить шаблон проектирования Proxy?[2]

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

Какое решение описывает шаблон проектирования Proxy?

Определите отдельный Proxyобъект, который

Это позволяет работать через Proxyобъект для выполнения дополнительных функций при доступе к субъекту. Например, для проверки прав доступа клиентов, обращающихся к чувствительному объекту.

Чтобы действовать как замена субъекта, прокси должен реализовать Subjectинтерфейс. Клиенты не могут сказать, работают ли они с субъектом или его прокси.

См. также класс UML и диаграмму последовательности ниже.

Структура

Диаграмма классов и последовательностей UML

Пример класса UML и диаграммы последовательности для шаблона проектирования Proxy. [3]

В приведенной выше диаграмме классов UML класс реализует интерфейс, чтобы он мог выступать в качестве замены объектов. Он поддерживает ссылку ( ) на замещенный объект ( ), чтобы он мог пересылать запросы к нему ( ). ProxySubjectSubjectrealSubjectRealSubjectrealSubject.operation()

Диаграмма последовательности показывает взаимодействия во время выполнения: ClientОбъект работает через Proxyобъект, который управляет доступом к RealSubjectобъекту. В этом примере Proxyпересылает запрос в RealSubject, который выполняет запрос.

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

Прокси в UML
Прокси в LePUS3 (легенда)

Возможные сценарии использования

Удаленный прокси

В распределенной объектной коммуникации локальный объект представляет удаленный объект (тот, который принадлежит другому адресному пространству). Локальный объект является прокси для удаленного объекта, и вызов метода на локальном объекте приводит к удаленному вызову метода на удаленном объекте. Примером может служить реализация банкомата , где банкомат может хранить прокси-объекты для банковской информации, которая существует на удаленном сервере.

Виртуальный прокси

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

Защита прокси

Защитный прокси-сервер может использоваться для управления доступом к ресурсу на основе прав доступа.

Смотрите также

Ссылки

  1. ^ Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес (1994). Шаблоны проектирования: элементы повторно используемого объектно-ориентированного программного обеспечения . Эддисон Уэсли. стр. 207 и далее. ISBN 0-201-63361-2.{{cite book}}: CS1 maint: несколько имен: список авторов ( ссылка )
  2. ^ "Шаблон проектирования Proxy - проблема, решение и применимость". w3sDesign.com . Получено 2017-08-12 .
  3. ^ "Шаблон проектирования Proxy - Структура и сотрудничество". w3sDesign.com . Получено 2017-08-12 .

Внешние ссылки