Реализация шаблона Proxy Design
Я смотрю Прокси шаблон на сайте Википедии: http://en.wikipedia.org/wiki/Proxy_pattern
Я понимаю программу на одном компьютере.
Но я задаю вопросы о реализации на 2 компьютерах.
на самом деле, в "реальной жизни", я полагаю, что:
1) Тема интерфейса дублируется с тем же именем на клиенте (компьютер A) и на сервере (компьютер B) => я прав?
2) объект класса Proxy находится в клиенте (компьютер A)
3) объект класса RealSubject находится на сервере (компьютер B)
4) в конструкторе класса Proxy создается экземпляр RealSubject => я прав?
В пункте 4, если я прав, как можно создать экземпляр в компьютере A, классе, расположенном в компьютере B?
Как, например, если класс B является веб-службой?
Я благодарю вас заранее.
1 ответ
1) Тема интерфейса дублируется с тем же именем на клиенте (компьютер A) и на сервере (компьютер B) => я прав?Да почти всегда.
2) объект класса Proxy находится в клиенте (компьютер A)Да
3) объект класса RealSubject находится на сервере (компьютер B)Да
4) в конструкторе класса Proxy создается экземпляр RealSubject => я прав? В конструкторе или любым другим способом, возможно, RealSubject уже создан, и все, что вам нужно сделать, это получить ссылку на него.
"[...] прокси-сервер может добавлять дополнительные функции к объекту, представляющему интерес, без изменения кода объекта". из Википедии.
Для вызова веб-службы у вас просто есть прокси-сервер веб-службы, который будет инкапсулировать вызов в WS.
Что-то вроде:
class WebServiceProxy {
private WebService ws;
public doWSAction() {
// Here you make the call to the actual web service: setup parameters, check security etc, whatever you need .
...
// then you call the actual web service:
ws.doWSAction()
}
}
Таким образом, тот, кому нужен веб-сервис, будет использовать только ваш локальный класс, и ему не придется делать все, что связано с вызовом, который вы делаете в своем методе.