2014-10-29 5 views
0


Я смотрю Узор прокси на сайте Википедии: http://en.wikipedia.org/wiki/Proxy_pattern
Я понимаю программу в одном компьютере.
Но я задаю мне вопросы о реализации на двух компьютерах.
В действительности, в «реальной жизни», я полагаю, что:
1) Объект интерфейса дублируется с тем же именем, на клиенте (компьютер A) и на сервере (компьютер B) => am i right?
2) объект класса Proxy в клиенте (компьютер А)
3) объект Classe RealSubject находится на сервере (компьютер Б)
4) в конструктор класса Proxy, экземпляр RealSubject является created => Я прав?
В пункте 4, если я прав, как можно создать экземпляр в компьютере A, класс, расположенный в компьютере B?
Как вы это сделаете, например, если класс B является веб-сервисом?
Я благодарю вас заранее.
Реализация Proxy Design Pattern

ответ

1

1) Объект интерфейса дублируется с тем же именем, на клиенте (компьютер A) и на сервере (компьютер B) => am i right? Да, почти всегда.

2) объект класса Proxy в клиенте (компьютер А) Да

3) объект класса RealSubject находится на сервере (компьютер Б) Да

4) в конструкторе класса Proxy создается экземпляр RealSubject => am i right? В конструкторе или любым другим способом, возможно, 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() 

    } 

} 

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

+0

Mulţumesc Matei. – Thomas

+0

Mulţumesc Matei. Большое спасибо Matei, чтобы взять время, чтобы ответить на мои вопросы и осветить мой мозг. – Thomas

+0

Matei, я хотел отметить этот ответ как полезный. Но моя репутация составляет менее 15, и, следовательно, я не имею права отмечать ответ как полезный. – Thomas