给目标对象提供一个代理对象。有代理对象控制目标对象的引用。
1、间接的访问目标对象;
2、对原有的业务增强;
比如:Spring的注解;
Mybatis同过mapper接口访问数据库
静态代理:
遵循“开闭原则”,面向对象最重要的一个原则,对扩展进行开发,对修改关闭。应用需求发生变化的时候,对模块进行添加扩展,尽量避免对原有代码进行修改。
否则,扩展能力差,可维护性差。