特征:代理类和委托类有相同的接口,代理类主要负责为委托类预处理消息、过滤信息以及把消息转发给委托方等,代理类和委托类之间为组合关系
**
代理设计模式的优缺点:
优点:
1.**职责清晰。委托人(被代理对象)只需要关注自己的业务逻辑,不用关心与其它模块或者调用者的交互。具体交互由代理对象(代理人)实现。
2.**降低系统耦合,符合OCP原则
3.高扩展性
缺点:
1.增加复杂度
2.可靠性可能降低**(代理对象可能在代理的时候增加一些“暗箱操作”,如房屋中中介从中抽取一部分提成。这就需要代理对象公开透明它的操作。)
静态代理模式与动态代理模式
静态代理模式:
代理对象由程序员创建,一般一个代理类只能代表一类目标对象。静态代理需要代理类与目标类有一样的继承父类和实现接口。
动态代理模式:
动态代理,也叫做JDK代理或接口代理。分为基于接口和抽象类。如果是基于接口,那么代理被必须实现InvocationHandler接口。如果是类,则需要利用第三方库cglib库实现。
