Я начал с динамических 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.