Реализация шаблона 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() 

   }

}

Таким образом, тот, кому нужен веб-сервис, будет использовать только ваш локальный класс, и ему не придется делать все, что связано с вызовом, который вы делаете в своем методе.

Другие вопросы по тегам