共同点:
- 都要实现与目标类相同的业务接口
- 在俩个类中都要声明目标对象
- 都可以在不修改目标类的前提下增强目标方法
不同点:
-
目的不同
装饰者: 简单说就是为了增强目标对象
静态代理 : 为了保护和隐藏目标对象
- 对于目标对象的获取方式不同
装饰者中目标对象的获取,通过代参构造器传入
静态代理类中,是在无参构造器中直接创建。
- 功能增强的实现者不同
装饰者模式中存在装饰者基类,其并不能实现增强,而是由具体的装饰者进行增强的,所以其存在着"装饰者链"
静态代理中,一般不存在父子类的关系,具体的增强,就是由代理类实现的。无需其子类完成,所以不存在 链 的概念