Глядя на UML diagram on wikipedia, как прокси-класс, так и субъектный класс реализуют один и тот же интерфейс.Почему шаблон прокси требует наследования?
Из того, что я понимаю, целью класса прокси является делегирование. Это можно сделать с помощью композиции; делегированный класс (ы) не должен реализовывать один и тот же интерфейс.
Есть ли причина, по которой предметный класс должен реализовать тот же интерфейс, что и прокси-класс?
Является ли это только ценным, если речь идет о фабрике? Если клиент использует тему, а позже я хочу, чтобы вместо этого использовался прокси-сервер, как я могу это сделать? (также наоборот). – neverendingqs
Вы правы, что для того, чтобы «Клиент» не знал, в какой реализации он, вы должны предоставить Клиенту экземпляр «Subject» (либо прокси, либо реальный предмет). Это можно сделать с помощью шаблона фабрики, но также может быть введена зависимость через вызов конструктора или метода. – dkatzel
Если клиент использует объект до этого шаблона, вам нужно будет изменить клиент, чтобы он использовал абстракцию темы прокси-шаблона (которая выглядит почти как старый объект). Тогда Клиент не знает, разговаривает ли он с Субъектом или его Прокси. – Fuhrmanator