美文网首页
适配器模式

适配器模式

作者: 小宇cool | 来源:发表于2020-10-17 18:19 被阅读0次

1. 适配器模式?

适配器模式(Adapter): 将一个类的接口转换成另一个接口,一满足用户需求,解决接口不一样产生的兼容问题.

1.1 适配器模式的好处

  1. 可以让两个没有关联的类一起运行,
  2. 提高了类的复用
  3. 增加了类的透明度
  4. 灵活性好

适配器的概念很好理解,比如现实生活中我们的手机可能没用有线耳机接口,只有一个type-c接口,这时候我们就得需要一个转换器,来将耳机和手机进行连接, 这个转换器就是一个典型的适配器

1.2适配器场景

  • 场景一
/* 
    假如我们现在有一个手机类 phone类, 它有一个recharge(充电)方法, 但它只支持typec数据线,
    此时我们有一个数据线类Android, 如果此时我们想通过Android类来调用phone的recharge方法时
    此时就需要一个转接头, 此时转接头就是一个适配器
*/
class Phone{
    constructor(){
        this.type = "typeC"
    }
    recharge(USB){
        // 必须为typeC接口的才能充电
        if(USB.type === "typeC"){
            console.log('正在充电中');
        }
    }
}
class Android{
    constructor(){
        this.type = "Android"
    }
}
class Change{
    constructor(){}
    connect(phone,usb){
        if(phone.type === "typeC" || usb.type3 === "Android"){
            phone.recharge({type:'typeC'})
        }
    }
}
let phone = new Phone(),
    android = new Android(),
    change = new Change();    
// 调用转接头change的connect方法
console.log(change.connect(phone,android));// 正在充电中
  • 场景二:
 /* 
    某个项目中我们用到了axios库发起了ajax请求,获取到了数据data,data是一个数组格式,
    而后端更新了,将返回的数据换成了键值对格式,此时我们修改用来写好的代码成本比较大
    所以我们可以加一段适配代码
  */
  axios.get("http://localhost:3001/teacher")// url
        .then(res =>{
            res = res.data
            //以前的msg是数组格式: ["张三" , "18" , "男"]
            //后端数据格式更新为 {name:"张三",age:"18",sex:"男}
            //done函数代码已成一个完整的逻辑,修改接口参数类型的话很麻烦
            //所以我们添加适配器:
          // res = [res.name, res.age, res.marry];
          // 假如此时后端的数据格式又变成了[ {name:"张三",age:"18",sex:"男}, {name:"王五",age:"20",sex:"男}]
          // 此时我们就得重新添加一个适配器
           res =  res.reduce((t,v) =>{
               t = [...t,...Object.values(v)]
               return t
            },[])
            done(res)
        })
       
function done(data){
    data.forEach(item =>{
       // code...
    })
}

上面举的例子都是适配器代码是比较简单的,实际过程中可能需要的适配器代码会更多一些,但是原理是一样的。

总结: 由于各种原因(结构升级. 优化代码等), 导致接口和之前的不一样,而重构整个代码是很麻烦的吗使用我们使用适配器代码将接口转换一下以保证能正确的使用,这就是适配器的作用.

相关文章

  • Java设计模式(二)

    talk is cheap show me the code 适配器模式 类适配器模式 接口适配器模式 对象适配器...

  • 适配器模式

    目录 1、什么是适配器模式? 2、适配器模式结构? 3、如何实现适配器模式? 4、适配器模式的特点? 5、适配器模...

  • 设计模式之适配器模式

    适配器模式: 类适配器模式、对象适配器模式、接口适配器模式 1.类适配器模式:新的接口出现了,但是和老的接口不兼容...

  • 学习iOS设计模式第一章 适配器(Adapter)

    今天学习了iOS设计模式中的适配器模式,适配器有两种模式对象适配器模式-- 在这种适配器模式中,适配器容纳一个它包...

  • 第4章 结构型模式-适配器模式

    一、适配器模式简介 二、适配器模式的优点 三、适配器模式的实例

  • 设计模式(Design Patterns)适配器模式(Adapt

    适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。 类的适配器模式 场景:将一个类转换成...

  • 适配器模式

    适配器模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。适配器模式将某个类的接口转换成客户端期...

  • 适配器模式

    先直观感受下什么叫适配器 适配器模式有类的适配器模式和对象的适配器模式两种不同的形式。 类适配器模式 对象适配器模...

  • 适配器模式

    适配器模式 一、适配器模式定义 适配器模式的定义是,Convert the interface of a clas...

  • 设计模式:结构型

    享元模式 (Pools,Message) 代理模式 适配器模式 :类适配器和对象适配器 装饰者模式 外观模式 桥接...

网友评论

      本文标题:适配器模式

      本文链接:https://www.haomeiwen.com/subject/dnjfmktx.html