TypeScript | 设计模式06 - 适配器模式

107 阅读2分钟

小知识,大挑战!本文正在参与“程序员必备小知识”创作活动。

前言

现实生活中存在设备的电压可能不同,为了满足需求我们可以使用一些电源适配器,如电源适配器,插头转换器等。这些中介设备其实就是我们要说的适配器模式一样道理,适配器模式的作用就是用来解决一些因无法互相兼容而一起工作的问题。

适配器模式

将一个类的接口转换成客户希望的另外一个接口,使得原本由于接口不兼容而不能一起工作的那些类能一起工作。

适配器UML类图

适配器模式.png

interface Target {
    sendPower(): void
}
class Power1 {
    public sendPower() {
        console.log('使用22V电源')
    }
}
class Power2 {
    public usePower() {
        console.log('使用22V电源')
    }
}
​
class AdapterTarget implements Target {
    sendPower(): void {
        console.log('转换22V电源');
        var power2: Power2 =new Power2();
        power2.usePower()
    }  
}
​
(()=>{
    var power1: Power1 =new Power1();
        power1.sendPower()
    var atr = new AdapterTarget();
    atr.sendPower();
})()

从代码中可以得到:power1 可以通过sendPower方式发送电源,其也符合Target期望的方式,但是power2没有只有usePower方式使用电源,所以就通过适配器模式,增加AdapterTarget类,将原目标Power2转换为目标角色想要的方式。

整个过程参与的角色:

  • 目标角色(Target)
  • 源角色:已存在的类或对象,且与目标对象不一致的角色
  • 适配器角色:适配器的核心,将源角色转化为目标角色支持的方式

应用场景:

  • 适配器模式适用正在服役的项目上,作系统扩展时使用
  • 项目中因使用mysql数据库,已构建类进行连接,访问或操作数据库,因需求要求可能需要能支持PostgreSQL数据库,这时就可以使用适配器模式新建类。

\