内容参考 https://www.jianshu.com/p/9d0575311214 、慕课网
是什么?作用?
定义一个包装类(Adapter),用于包装不兼容接口的对象(Adaptee)
- 优点: 可以让接口不兼容而不能一起工作的那些类可以在一起工作
- 缺点: 过多的使用适配器,会让系统非常零乱,不易整体进行把握
理解
分为两个模式
- 类的适配器模式、
- 对象的适配器模式
使用实例
实例概况 - 类的适配器模式 - 继承的方式
- 背景:买了一个进口笔记本电脑
- 冲突:笔记本电脑需要的三项电源,和只提供的二项电源冲突
- 解决方案:设置一个适配器二项充电口转化为三项充电口
步骤1: 创建Target接口(期待得到的插头):能输出三项供电
1 | /** |
步骤2: 创建源类(现有的插头)
1 | /** |
步骤3:创建适配器类(Adapter)
1 | /** |
步骤4:定义具体使用目标类,并通过Adapter类调用所需要的方法从而实现目标, 让笔记本能够用使用三项电
1 | /** |
实例概况 - 对象的适配器模式 - 组合的方式 (感觉用的更多)
与类的适配器模式相同,对象的适配器模式也是把适配的类的API转换成为目标类的API。
步骤1: 创建Target接口(期待得到的插头):能输出三项供电
1 | // 参照如上 |
步骤2: 创建源类(现有的插头)
1 | // 参照如上 |
步骤3: 创建适配器类(Adapter)(不使用继承而是委派)
1 | /** |
步骤4:定义具体使用目标类,并通过Adapter类调用所需要的方法从而实现目标
1 | /** |
总结
第二种对象的适配器模式在angular里面注入组件时用的应该是适配器模式, 使用属性来组合,耦合性第一点
第一种类的适配器模式解耦合更好,因为要继承
适配器好处
- 重用, 复用的现存的类, 解决了现存类和复用环境要不一致的问题
- 低耦合, 无需修改原有代码(遵循开闭原则)