标签:
谈一下java的代理:
spring的使用目前较为普及,其实从spring中可以看到很多的常见的设计模式,常见的设计架构思路。比如代理机制,spring的事务管理,aop,拦截器,安全检查,日志输出......
这些都可以看作是代理的实现,当然还不止这些。简单的写几个测试类,阐述一下java的代理:
所谓的静态代理:
public interface AmountCaculate{
public BigDecimal add();
public BigDecimal multi();
}
public class AmountCaculateImpl implements AmountCaculate{
public BigDecimal add(){
//todo
}
public BigDecimal multi(){
//todo
}
}
如果要在add,multi方法之前,做一步公共操作,规范起见,我们需要持有一个AmountCaculate的引用,于是:
public class AmountCaculateProxy implements AmountCaculate{
private AmountCaculate amountCaculate;
public BigDecimal add(){
saveOperator();
amountCaculate.add();
}
public BigDecimal multi(){
saveOperator();
amountCaculate.mutil();
}
}
这样,AmountCaculate temp=new AmountCaculateProxy(new AmountCaculateImpl());就OK了。
所谓的动态代理:
动态代理也是spring中经常用到的技术,java为我们提供运行时创建对象的反射机制,用它我们可以轻松地创建目标对象,调用目标对象的目标方法。
java中我们可以实现InvocationHandler,然后在目标对象执行方法之前,方法之后,甚至方法ing,我们可以加入垂直的处理逻辑,听着像拦截器。
可以自己动写一个。
标签:
原文地址:http://www.cnblogs.com/render-inside/p/5073978.html