定义
为其他对象提供一种代理以控制对这个对象的访问。
代理模式也叫做委托模式,它是一项基本设计技巧。许多其他的模式,如状态模式、策略模式、访问者模式本质上是在更特殊的场合采用了委托模式。代理模式提供了非常好的访问控制。
优点
职责明晰
高扩展性
Spring AOP是一个典型的动态代理
普通代理:需要用户设置代理服务器的IP地址,用户必须知道代理的存在。
透明代理: 用户不用设置代理服务器地址,就可以直接访问,代理服务器对用户来说是透明的,不知道它存在。
代理类不仅仅可以实现主题接口,也可以实现其他接口完成不同的任务,代理的目的是在目标对象的方法上作增强,这种增强的本质通常就是对目标对象的方法进行拦截和过滤。
动态代理的主要意图是解决我们常说的“审计”问题,也就是横切面编程,在不改变我们已有代码结构的情况下增强控制对象的行为。
参考
《设计模式之禅》