适配器模式
特点在于
主要是对现有接口做转换
一般用于解决接口不匹配问题
装饰模式
特点在于
被装饰的对象必须是外部传入的,常见的是构造方法传入
一般用于功能增强,可能会有很多层装饰,可以随意排列组合。典型应用:java.io包
代理模式
特点在于
隔离调用类和被调用类的关系,通过一个代理类去实现
一般用于访问控制
适配器模式VS装饰模式
- 适配器包装的是不同类型的对象,然后将其伪装成自己的同类;装饰者包装的是自己的同类,相同的接口或者父类
适配器模式VS代理模式
适配器是自己新建接口并实现,在实现中包含被适配的接口;代理模式与源对象实现同一接口
适配器模式主要改变所考虑对象的接口;而代理模式不能改变所代理对象的接口,只能控制对其的操作
装饰模式VS代理模式
装饰模式从来不创建被装饰的对象,它总是添加新功能到已经存在的对象上面;而代理模式在被代理对象不存在的时候会创建被代理对象
装饰模式可以通过嵌套装饰添加多重额外功能,而代理模式一般不推荐使用嵌套代理