Ответ 1
Динамический прокси является особенностью JDK. Его можно использовать для реализации интерфейса с помощью обработчика вызовов.
Динамический класс прокси (просто как прокси-класс ниже) является классом который реализует список интерфейсов указанный во время выполнения, когда класс созданный, с поведением, как описано ниже. Прокси-интерфейс - такой интерфейс, который реализуется прокси-класса. Экземпляр прокси - это экземпляр класса прокси. Каждый прокси-сервер экземпляр имеет связанный вызов объект-обработчик, который реализует интерфейс InvocationHandler.
У динамического прокси есть некоторые накладные расходы. Однако для большинства случаев накладные расходы не будут значительными. Реальная проблема заключается в том, что (более) использование динамических прокси делает приложение сложнее понять и отладить. Например, динамический прокси-сервер будет отображаться с несколькими строками в стеке.
Динамические прокси-серверы часто используются для создания декораторов . Одним из примеров этого является АОП в Spring. (Я не хочу вдаваться в подробности АОП и не использовать терминологию АОП, чтобы все было просто). Если определенные проблемы выполняются в одном классе и используются во многих местах. Динамические прокси (и обработчики вызовов) - это только код клейма (предоставляется Spring) для перехвата вызовов метода. (На самом деле динамические прокси-серверы являются лишь деталью реализации этой возможности. Создание классов "на лету" - это еще одна возможность реализовать ее.)