问题引入:
何为适配器模式
适配器模式的优势
适配器模式的使用场景
适配器模式的代码简单实现
这里将从以上几个方面记录适配器模式的相关内容:
- 何为适配器模式
适配器模式的定义是将一个类的接口转换为客户需要的另一个接口,使得由于不兼容而不能进行工作的一个类可以进行正常的工作。一个简单的生活例子就是我们使用两脚的插头无法在三角的插线孔上进行充电,所以需要一个将两脚转化为三角的一个适配器进行辅助处理。 - 适配器模式的优势
- 客户端通过适配器模式可以简单,透明的调用目标接口实现相应的需求
- 可以对已存在的类进行复用,避免对已存在的大量的代码进行修改,同时可以对新的需求进行扩展
- 将目标类和适配器进行解耦,解决了目标类和适配类接口不一致的问题
- 适配器模式的使用场景
- 对于一些比较老的项目进行扩展开发时,为了不大量的改动先前的代码,同时又可以对先前有的部分功能加以复用时,可以采用适配器模式进行处理
- 对类中的需求实现不满足特定的场景需求时,可以加上一个适配器类进行进一步的处理,比较好的一个例子就是Vue框架中的computed计算属性
- 适配器模式的代码实现
这里我们只以前端Js的方式进行适配器模式的实现:
首先我们先看一下简单的适配器模式的UML类图:
// 首先将定义一个Adaptee的类
class Adaptee{
constructor(){
//do something
}
specificRequest(){
return "这是目标接口类"
}
}
// 定义一个适配器类
class Target{
constructor(){
// do something
}
request(){
const adaptee = new Adaptee();
return `被适配器适配后的内容: ${adaptee.specificRequest()}`
}
}
// 测试使用:
const target = new Target()
target.request()
当然,这里的实现是最简单的一种方式,希望大家理解的是适配器模式的一个理念。
最后做一个适配器模式的设计原则分析:
- 适配器模式满足开放封闭原则,对扩展开放,对修改封闭,我们使用适配器的一个理念就是对于原有的代码不进行修改,添加适配器满足扩展的需求
- 符合单一职责原则,添加一个适配器实现一个类的扩展适配,将类的实际实现和实际的调用解耦
关于适配器模式就说这么多,大家 加油!!!!