public interface IBoss {//接口
int yifu(String size);
}
原業(yè)務(wù)實(shí)現(xiàn)類(lèi)
public class Boss implements IBoss{
public int yifu(String size){
System.err.println("天貓小強(qiáng)旗艦店,老板給客戶(hù)發(fā)快遞----衣服型號(hào):"+size);
//這件衣服的價(jià)錢(qián),從數(shù)據(jù)庫(kù)讀取
return 50;
}
public void kuzi(){
System.err.println("天貓小強(qiáng)旗艦店,老板給客戶(hù)發(fā)快遞----褲子");
}
}
原業(yè)務(wù)調(diào)用
public class SaleAction {
@Test
public void saleByBossSelf() throws Exception {
IBoss boss = new Boss();
System.out.println("老板自營(yíng)!");
int money = boss.yifu("xxl");
System.out.println("衣服成交價(jià):" + money);
}
}
代理類(lèi)
public static IBoss getProxyBoss(final int discountCoupon) throws Exception {
Object proxedObj = Proxy.newProxyInstance(Boss.class.getClassLoader(),
new Class[] { IBoss.class }, new InvocationHandler() {
public Object invoke(Object proxy, Method method,
Object[] args) throws Throwable {
Integer returnValue = (Integer) method.invoke(new Boss(),
args);// 調(diào)用原始對(duì)象以后返回的值
return returnValue - discountCoupon;
}
});
return (IBoss)proxedObj;
}
}
新業(yè)務(wù)調(diào)用
public class ProxySaleAction {
@Test
public void saleByProxy() throws Exception {
IBoss boss = ProxyBoss.getProxyBoss(20);// 將代理的方法實(shí)例化成接口
System.out.println("代理經(jīng)營(yíng)!");
int money = boss.yifu("xxl");// 調(diào)用接口的方法,實(shí)際上調(diào)用方式?jīng)]有變
System.out.println("衣服成交價(jià):" + money);
}
}