Agente Java Dynamic Agent Pattern: Uma função representa outra função para atingir certas funções específicas.
Por exemplo: a relação entre fabricantes, intermediários e clientes Quando os clientes compram produtos, eles não negociam diretamente com o fabricante, nem sabem como os produtos são produzidos. e alguns serviços pós-venda são fornecidos.
O padrão do agente tem três funções: 1. Função do sujeito abstrato 2. Função do sujeito do agente 3. Função do agente real
Vamos dar uma olhada na realidade de um proxy estático.
Vou pegar um tanque como exemplo.
Papel do tema abstrato: Móvel
interface pública móvel {
movimento vazio();
}
classe pública TanktimeProxy implementa Moveable{
t móvel privado;
public TanktimeProxy(T móvel) {
super();
isto.t = t;
}
@Substituir
movimento vazio público() {
longo tempo1 = System.currentTimeMillis();
System.out.println("time1="+time1);
t.move();
longo tempo2 = System.currentTimeMillis();
System.out.println("time2="+time2);
System.out.println("O tempo de execução é:"+(time2-time1));
}
}
classe pública Tank implementa Moveable{
@Substituir
movimento vazio público() {
System.out.println("Tanque em movimento.....");
}
}
classe pública TestTank {
public static void main(String[] args) {
Tanque t = novo Tanque();
Movimento móvel = new TanktimeProxy(t);
mover.move();
}
}
Em seguida, quero adicionar um diário antes e depois do método move() do TanK:
Tenho que escrever outra classe para implementar esta funcionalidade:
classe pública TanklogProxy implementa Moveable{
t móvel privado;
public TanklogProxy(T móvel) {
super();
isto.t = t;
}
@Substituir
movimento vazio público() {
System.out.println("iniciar movimento.....");
t.move();
System.out.println("finalizar movimentação......");
}
}
classe pública TestTank {
public static void main(String[] args) {
Tanque t = novo Tanque();
Movimento móvel = new TanktimeProxy(t);
Movimento móvel = new TanklogProxy(mover);
movet.move();
}
}
Se eu quiser adicionar mais funções antes e depois do método move() do Tank ser chamado, preciso escrever mais funções de tema do agente. Isso tornará o código muito gordo e difícil de manter. ser usado para resolver isso? A resposta é sim. Podemos gerar dinamicamente funções de tema de agente para proxy de todos os objetos proxy.
No final do artigo, gostaria de compartilhar com vocês algumas piadas de programadores: IBM e Boeing 777
O Boeing 777 é a primeira aeronave projetada e fabricada inteiramente em realidade virtual computacional, utilizando equipamentos inteiramente fornecidos pela IBM. Antes do voo de teste, o presidente da Boeing convidou com entusiasmo o diretor técnico da IBM para participar do voo de teste, mas o supervisor disse: “Ah, é uma grande honra, mas é o aniversário da minha esposa naquele dia, então…”...
O CEO da Boeing ficou furioso ao ouvir isso: “Covarde, ainda não te contei a data do voo de teste!”