Введение
Модель проектирования программного обеспечения
В компьютерном программировании, паттерн "заместитель" (proxy) является моделью проектирования программного обеспечения. Заместитель, в своей наиболее общей форме, – это класс, функционирующий как интерфейс к чему-либо другому. Заместитель может взаимодействовать с чем угодно: с сетевым соединением, большим объектом в памяти, файлом или другим ресурсом, который дорого или невозможно продублировать. Короче говоря, заместитель – это объект-оболочка или агент, к которому клиент обращается для доступа к реальному объекту, выполняющему работу "за кулисами". Использование заместителя может заключаться в простой переадресации запросов реальному объекту, либо предоставлять дополнительную логику. В заместителе можно реализовать дополнительную функциональность, например, кэширование при выполнении ресурсоемких операций с реальным объектом, или проверку предусловий перед выполнением операций над реальным объектом. Для клиента работа с объектом-заместителем аналогична работе с реальным объектом, поскольку оба реализуют один и тот же интерфейс.
In computer programming, the proxy pattern is a software design pattern. A proxy, in its most general form, is a class functioning as an interface to something else. The proxy could interface to anything: a network connection, a large object in memory, a file, or some other resource that is expensive or impossible to duplicate. In short, a proxy is a wrapper or agent object that is being called by the client to access the real serving object behind the scenes. Use of the proxy can simply be forwarding to the real object, or can provide additional logic. In the proxy, extra functionality can be provided, for example caching when operations on the real object are resource intensive, or checking preconditions before operations on the real object are invoked. For the client, usage of a proxy object is similar to using the real object, because both implement the same interface.
Какие проблемы может решить модель проектирования Proxy?
Доступ к объекту должен контролироваться. При доступе к объекту должна предоставляться дополнительная функциональность. При обращении к конфиденциальным объектам, например, должна быть возможность проверки наличия у клиентов необходимых прав доступа.
Удаленный прокси
В распределенной объектной коммуникации локальный объект представляет удаленный объект (тот, который находится в другом адресном пространстве). Локальный объект является посредником (прокси) для удаленного объекта, и вызов метода у локального объекта приводит к вызову метода на удаленном объекте. Например, в реализации банкомата банкомат может содержать прокси-объекты для банковской информации, хранящейся на удаленном сервере.
Защитный прокси
Прокси-сервер защиты может использоваться для управления доступом к ресурсу в соответствии с правами доступа.