代理的优点
继承实现
缺点:
- 继承关系决定了代理顺序,代理顺序改变,需要新增继承类。
组合实现
优点:
- 组合关系决定了代理顺序,类可以任意组合,不会新增类
虽然静态代理侵入性很小,但是增强的代码无法复用。比如接口再加一个 stop 方法,需要复制耗时记录的代码
需要一个代理类,可以给所有的类做代理。
优点:
- 代理模式能将代理对象与真实被调用的目标对象分离
- 一定程度上降低了系统的耦合度,扩展性好
- 增强目标对象
缺点:
- 代理模式会造成系统设计中类的数目增加
- 在客户端和目标对象增加一个代理对象,会造成请求处理速度变慢
- 增加系统的复杂度