在做项目的时候经常的会用到一些框架,框架的使用方便了程序员开发。但是有时候用这些框架未免会让我产生一些疑惑,比如Jfinal框架里为什么在类或者方法前加个@Before或者@After的注解就能随意在前后插入另外一个类的代码了?还有spring框架里,加个@Transational注解就能让事务回滚?MyBatis框架中直接调用接口里的方法就能实现增删改查了,明明接口里面啥也没写啊!

后来自己学习了设计模式才知道,原来它们都是用了设计模式里的代理模式。

代理是一种设计模式,通过代理对象访问目标对象.好处就是:可以在目标对象实现的基础上

201802251519531624859243.png