JAVA-ダイナミックエージェント実現(インターフェース実現)
9193 ワード
まずダイナミックエージェントを紹介します。通俗的には、メーカーに代わって商品を販売し、メーカーに委託して代理販売しています。 次のシーンを紹介します○工場は商品を生産して、代理店は工場から製品を持って行きます。代理店から商品を買います。この時、代理店は二十パーセントの利益を回収します。
次のコード部分: まずインタフェースを作ります。あるべき商品は販売とアフターサービスです。 は次に具体的な製品類を作成し、上記インターフェース を実現する。最後に、私たちは消費者を模擬し、製品を消費し、代理対象を作成します。
次のコード部分:
package com.Proxy;
public interface IProducer {
//
public void saleProduct(float money);
//
public void afterService(float money);
}
package com.Proxy;
public class Producer implements IProducer {
//
public void saleProduct(float money){
System.out.println(" , "+money);
}
//
public void afterService(float money){
System.out.println(" , "+money);
}
}
public class Client {
public static void main(String[] args) {
Producer producer = new Producer();
// :Proxy newProxyInstance ,
//newProxyInstance
/**
* ClassLoader : ( )
* Class[] :
* InvocationHandle : , , ,
*/
IProducer proxyProducter = (IProducer) Proxy.newProxyInstance(producer.getClass().getClassLoader(),
producer.getClass().getInterfaces(), new InvocationHandler() {
/**
* :
* @param proxy
* @param method
* @param args
* @return
* @throws Throwable
*/
@Override
public Object invoke(Object proxy, Method method, Object[] args) throws Throwable {
//
//1.
Object returnValue = null;
Float money = (float) args[0];
if("saleProduct".equals(method.getName())){
// ,
returnValue = method.invoke(producer,money*0.8f);
}
return returnValue;
}
});
proxyProducter.saleProduct(100000f);
}
}