Как использовать несколько классов InvocationHandler с прокси-классом в Java - PullRequest
0 голосов
/ 03 марта 2020

Я начал с динамических c прокси, изучив stati c прокси, а затем динамические c прокси. Во многих блогах упоминается, что прокси-серверы Dynami c сокращают дублирующийся код по сравнению с прокси-серверами Stati c. Но я впал в глубокую растерянность, потому что не смог увидеть преимущества этого следующего случая.

Подробный пример

Work homework = new HomeWork();

ProxyTimeWork proxyTimeWork = new ProxyTimeWork(homework);

ProxyRestWork proxyRestWork = new ProxyRestWork(proxyTimeWork);

proxyRestWork.doYourJob();

Выше приведен фрагмент кода, который использует два stati c прокси и t ie их вместе.

В stati c прокси, потому что прокси классы также реализуют связанные интерфейсы, они могут быть вложены вместе. То есть сначала он вызывает метод прокси класса ProxyTimeWork, затем класс ProxyRestWork и, наконец, класс HomeWork , и сами прокси-классы могут работать независимо.

Но я могу не делайте то же самое с механизмом Dynami c Proxy, поскольку один экземпляр InvocationHandle соответствует одной стратегии Proxy, а Proxy.newProxyInstance() также принимает только один экземпляр InvocationHandle. Это означает, что для создания двух стратегий прокси до doYourJob() мне нужно создать дополнительный экземпляр InvacationHandle в дополнение к двум уже существующим экземплярам InvocationHandler.

...