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

Возможные сценарии использования
[ редактировать ]Удаленный прокси
[ редактировать ]При распределенной объектной коммуникации локальный объект представляет собой удаленный объект (тот, который принадлежит другому адресному пространству). Локальный объект является прокси-сервером для удаленного объекта, а вызов метода локального объекта приводит к удаленному вызову метода удаленного объекта. Примером может служить реализация банкомата , где банкомат может хранить прокси-объекты для банковской информации, существующей на удаленном сервере.
Виртуальный прокси
[ редактировать ]Вместо сложного или тяжелого объекта в некоторых случаях может оказаться полезным представление скелета. Если базовое изображение имеет огромный размер, его можно представить с помощью виртуального прокси-объекта, загружая реальный объект по требованию.
Прокси защиты
[ редактировать ]Защитный прокси-сервер может использоваться для управления доступом к ресурсу на основе прав доступа.
См. также
[ редактировать ]Ссылки
[ редактировать ]- ^ Эрих Гамма, Ричард Хелм, Ральф Джонсон, Джон Влиссидес (1994). Шаблоны проектирования: элементы объектно-ориентированного программного обеспечения многократного использования . Эддисон Уэсли. стр. 207 и далее . ISBN 0-201-63361-2 .
{{cite book}}
: CS1 maint: несколько имен: список авторов ( ссылка ) - ^ «Шаблон проектирования прокси — проблема, решение и применимость» . w3sDesign.com . Проверено 12 августа 2017 г.
- ^ «Шаблон проектирования прокси — структура и сотрудничество» . w3sDesign.com . Проверено 12 августа 2017 г.
Внешние ссылки
[ редактировать ]

- Гири, Дэвид (22 февраля 2002 г.). «Возьмите управление на себя с помощью шаблона проектирования Прокси» . JavaWorld . Проверено 20 июля 2020 г.
- Проект с открытым исходным кодом PerfectJPattern , обеспечивает компонентную реализацию шаблона прокси на Java.
- Сравнение адаптера, прокси и шаблона фасада на Wayback Machine (архивировано 11 марта 2012 г.)
- Шаблон проектирования прокси
- Пример реализации шаблона прокси на C++ на Wayback Machine (архивировано 19 октября 2014 г.)
- Описание шаблона прокси из репозитория шаблонов Портленда.