Modo de agente
O modelo de proxy é chamado proxy ou substituto em inglês, e ambos podem ser traduzidos como "agente" em chinês. A chamada procuração significa que uma pessoa ou uma instituição age em nome de outra pessoa ou de outra instituição. Em alguns casos, um cliente não deseja ou não pode se referir diretamente a um objeto, e o objeto proxy pode atuar como um intermediário entre o cliente e o objeto de destino
A. papel temático abstrato
Declara uma interface comum entre tópicos reais e proxy, para que qualquer tópico real possa ser usado.
B. Papel de proxy:
A função temática do agente contém referências a tópicos reais, para que objetos reais de tópicos possam ser operados a qualquer momento; A função de tema do agente fornece a mesma interface que a função de tópico real, para que possa substituir o tópico real para controlar referências a tópicos reais a qualquer momento e é responsável por criar objetos de tópico reais (e excluir objetos de tópico reais) quando necessário; A função do agente geralmente executa uma operação antes ou depois de passar a chamada do cliente para o tópico real, em vez de simplesmente passar a chamada para o objeto de tópico real.
C. papel temático real
Define o objeto real representado pela função de proxy
Por exemplo:
Refatorando com o modo dinâmico de proxy
JDK Proxy dinâmico
Classe de proxy do interceptador de classe Target
Resumo: 1. Como a classe proxy gerada pelo JDKProxy implementa a interface, todos os métodos na classe de destino estão incluídos na classe Proxy.
2. Todos os métodos da classe de proxy gerados intercepta todos os métodos da classe de destino. O conteúdo do método de invoque no interceptador é exatamente a composição de cada método da classe proxy.
3. As interfaces devem existir ao usar o JDKProxy.
4. Os três parâmetros no método Invoke podem acessar a API do método chamado, os parâmetros do método chamado e o tipo de retorno do método chamado da classe de destino.
Refatorando com o modo de proxy dinâmico JDK
Reconstruindo transações de hibernato usando o modo de proxy dinâmico JDK
Proxy dinâmico do CGLIB
1. O CGLIB é uma biblioteca de classe de geração de código poderosa, de alto desempenho e de alta qualidade. Ele pode estender as aulas de Java e implementar interfaces Java durante o tempo de execução.
2. Use o CGLIB para gerar uma classe de proxy como uma subclasse da classe de destino.
3. Nenhuma interface é necessária para gerar classes de proxy usando CGLIB
4. A classe proxy gerada pelo CGLIB substitui os métodos da classe pai.
5. O conteúdo do método de interceptação no interceptador é exatamente o corpo do método na classe de proxy.
Refatoração de transações de hibernato usando o modo de proxy dinâmico do CGLIB
Spring dois métodos de proxy
1. Se o objeto de destino implementar várias interfaces, o Spring usará o proxy Java.Lang.Reflect.Proxy da JDK.
Vantagens: como existem interfaces, o sistema é mais vagamente acoplado. Desvantagens: Crie interfaces para cada classe de destino.
2. Se o objeto de destino não implementar nenhuma interface, o Spring usará a biblioteca CGLIB para gerar uma subclasse do objeto de destino.
Vantagens: como a classe de proxy e a classe de destino são herdadas, não há necessidade de uma interface existir.
Desvantagens: Como não há interface usada, o acoplamento do sistema não é tão bom quanto o proxy dinâmico usando o JDK.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.