Прокси Java включают динамический прокси jdk и прокси cglib. Здесь мы говорим только о динамическом прокси jdk. JDK в основном использует механизм отражения Java (то есть пакет java.lang.reflect).
Принцип таков (примерами являются певцы и менеджеры):
Установите общедоступный интерфейс, например: общедоступный интерфейс певца Singer;
Используйте определенный класс для реализации интерфейса, например: Джей Чоу, он певец, поэтому он реализует класс Singer, класс MySinger реализует Singer.
Создайте класс агента, который здесь является брокером. Ему нужно реализовать класс InvoctionHandler и переписать метод вызова, чтобы, когда что-то произойдет и вы захотите найти Джея Чоу (конкретный класс), вы должны были сначала обратиться к брокеру (класс агента). ), чтобы справиться с этим. Агент решает, встретиться ли с вами (выполнять ли этот метод).
1. Интерфейс певца
публичная абстрактная пустота пойте();
публичная абстрактная строка s();
}
//Связывать
общественная привязка объекта (цель объекта) {
this.target=цель;
//Прокси надо поставить обратно
return Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}
//снова
Открытый вызов объекта (прокси-сервер объекта, метод метода, аргументы Object[])
бросает Throwable {
Объект о = ноль;
System.out.println("Начать транзакцию");
System.out.println("Разрешения судьи");
o = метод.invoke(target, args);//метод выполнения
System.out.println("Завершить транзакцию");
вернуться о;
}
}