Os proxies Java incluem o proxy dinâmico jdk e o proxy cglib. Aqui falamos apenas sobre o proxy dinâmico jdk que usa principalmente o mecanismo de reflexão java (ou seja, o pacote java.lang.reflect).
O princípio é (cantores e empresários são exemplos):
Estabeleça uma interface pública, como: interface pública do cantor Cantor;
Use uma classe específica para implementar a interface, por exemplo: Jay Chou, ele é cantor, então ele implementa a classe Singer, a classe MySinger implementa Singer
Crie uma classe de agente, que é o corretor aqui. Ele precisa implementar a classe InvocationHandler e reescrever o método de invocação para que quando algo acontecer e você quiser encontrar Jay Chou (classe concreta), você deve primeiro ir ao corretor (classe de agente). ) para lidar com isso. O agente está decidindo se deve se encontrar com você (se deve executar este método).
1. Interface do cantor
público abstrato void sing();
público abstrato String s();
}
//Vincular
vinculação de objeto público(objeto alvo){
this.target=alvo;
//Proxy deve ser colocado de volta
retornar Proxy.newProxyInstance(target.getClass().getClassLoader(), target.getClass().getInterfaces(), this);
}
//de novo
invocação de objeto público (proxy de objeto, método de método, objeto [] args)
lança Arremessável {
Objeto o =nulo;
System.out.println("Iniciar transação");
System.out.println("Permissões do juiz");
o = método.invoke(target, args); //método de execução
System.out.println("Finalizar transação");
retornar o;
}
}