Прокси-шаблон - зачем реализовывать интерфейс из реального класса объектов?
Я не понимаю, почему я должен реализовать интерфейс в целевой объект Proxy Pattern для представления. Я думаю, что это обычное использование интерфейса, который реализуется прокси- классом, который будет обеспечивать получение реальной информации о классе объекта и показывать ее клиенту... но я вижу, что все примеры реальных классов объектов реализуют интерфейс.....Зачем?
1 ответ
Цель шаблона Proxy Pattern состоит в том, чтобы иметь объект (Proxy), который может заменить другой (Real object). Для достижения этого оба объекта (Proxy и Real) должны реализовывать общий интерфейс: тот, который используется Клиентом. Таким образом, Клиенту нужно будет манипулировать только интерфейсом, независимо от того, реализуется ли он непосредственно объектом Real или косвенно путем перенаправления прокси на объект Real.
Существует еще один очень близкий шаблон, называемый шаблоном адаптера, для которого не требуется объект Real для реализации этого интерфейса. Это потому, что цель другая: Адаптер стремится позволить Клиенту косвенно манипулировать Реальным объектом, который не реализует интерфейс.