javaにおける動的エージェントの詳細および実例


Javaダイナミックエージェント関連
まず静的なプロキシモードコードを見ます。

package test; 
 
public interface Subject 
{ 
 public void doSomething(); 
} 


package test; 
public class RealSubject implements Subject{ 
 public void doSomething() { 
 System.out.println( "call doSomething()" ); 
 } 
} 


package test; 
public class SubjectProxy implements Subject { 
 Subject subimpl = new RealSubject(); 
 public void doSomething() { 
 subimpl.doSomething(); 
 } 
} 

package test; 
public class TestProxy { 
 public static void main(String args[]) { 
 Subject sub = new SubjectProxy();  
 sub.doSomething(); 
 } 
} 
最初はSubject Proxyが定義されているのは余計だと思いますが、直接的に実用化されています。その後、業務が膨大になるにつれて、proxy類の実装は粒度のコントロールにとって重要な意味を持つことが分かります。しかし、静的エージェントというモード自体に大きな問題があります。種類の方法の数が多くなると、エージェントクラスのコード量は非常に大きいです。従って動的エージェントを導入してこのような問題を解決した。
コードを先に見ます

package test; 
 
public interface Subject 
{ 
 public void doSomething(); 
} 

package test; 
public class RealSubject implements Subject { 
 public void doSomething() { 
 System.out.println( "call doSomething()" ); 
 } 
} 

package test; 
import java.lang.reflect.InvocationHandler; 
import java.lang.reflect.Method; 
import java.lang.reflect.Proxy; 
public class ProxyHandler implements InvocationHandler { 
 private Object tar; //      ,       
 public Object bind(Object tar) { 
 this.tar = tar; //           ,      
 return Proxy.newProxyInstance(tar.getClass().getClassLoader(), tar.getClass().getInterfaces(), this); 
 } 
 public Object invoke(Object proxy , Method method , Object[] args)throws Throwable { 
 Object result = null; 
 //          AOP    
 //          ,       
 result = method.invoke(tar,args); 
 //          ,       
 return result; 
 } 
} 

public class TestProxy { 
public static void main(String args[]) { 
 ProxyHandler proxy = new ProxyHandler(); //            
 Subject sub = (Subject) proxy.bind(new RealSubject()); 
 sub.doSomething(); 
 } 
} 
コードを読み終わったら、今答えます。ダイナミックエージェントの役割は何ですか?
Proxy類のコード量は固定されており、業務が膨大になることはない。
AOPプログラミングが実現できます。実際に静的エージェントも実現できます。全体として、AOPは代理モードの典型的な応用として計算できます。
結合はパラメータによって真実の種類が判断され、事前の実用化を必要とせず、より柔軟に変化する。
読んでくれてありがとうございます。みなさんのご協力をお願いします。ありがとうございます。