美文网首页
《设计模式》之适配器模式

《设计模式》之适配器模式

作者: 魅猫之 | 来源:发表于2020-06-13 15:11 被阅读0次

定义:

适配器模式(Adapter Pattern)是作为两个不兼容的接口之间的桥梁。这种类型的设计模式属于结构型模式,它结合了两个独立接口的功能。

适配器模式在生活中很常见,比如苹果电脑的充电器,在不同的国家有不同的标准,在中国大陆跟香港的标准就不一样,很多直接在香港带回来的电脑,充电需要使用转接头,不然插不上;

还有最常见的显示器转接头,HDMI转VGA,DVI转VGA,各种互转

简单的来说就是通过加入中间层来解决兼容性问题

代码:

// VGA接入的接口
interface IVGADisplay {
    vgaDisplay: () => void,
}

// 一个只能接入VGA接口信号的投影仪
class VGAProjection implements IVGADisplay {
    public input: IVGADisplay
    public constructor(input: IVGADisplay) {
        this.input = input
    }
    public vgaDisplay() {
        this.input.vgaDisplay()
    }
}

// HDMI输出接口
interface IHDMIDisplay {
    HDMIOutput: () => void,
}

// 一台只有HDMI接口的MacBook
class Macbook implements IHDMIDisplay {
    public HDMIOutput() {
        return 'HDMI输出'
    }
}

// DVI输出接口
interface IDVIDisplay {
    DVIOutput: () => void,
}

// 一台只有DVI接口的台式电脑
class PC implements IDVIDisplay {
    public DVIOutput() {
        return 'DVI输出'
    }
}

// HDMI转VGA适配器
class HDMI2VGAAdapter implements IVGADisplay {
    public hdmi: IHDMIDisplay
    public constructor(hdmi: IHDMIDisplay) {
        this.hdmi = hdmi
    }
    public vgaDisplay() {
        console.log(this.hdmi.HDMIOutput())
        console.log('转换HDMI信号...')
        console.log('输出VGA信号')
    }
}

// DVI转VGA适配器
class DVI2VGAAdapter implements IVGADisplay {
    public dvi: IDVIDisplay
    public constructor(dvi: IDVIDisplay) {
        this.dvi = dvi
    }
    public vgaDisplay() {
        console.log(this.dvi.DVIOutput())
        console.log('转换DVI信号...')
        console.log('输出VGA信号')
    }
}

// 使用HDMI转VGA适配器对MacBook进行转接
const h2vAdapter = new HDMI2VGAAdapter(new Macbook())
let projection = new VGAProjection(h2vAdapter)
projection.vgaDisplay()

// 使用DVI转VGA适配器对PC进行转接
const d2vAdapter = new DVI2VGAAdapter(new PC())
projection = new VGAProjection(d2vAdapter)
projection.vgaDisplay()

输出结果:

[LOG]: HDMI输出 
[LOG]: 转换HDMI信号... 
[LOG]: 输出VGA信号 
[LOG]: DVI输出 
[LOG]: 转换DVI信号... 
[LOG]: 输出VGA信号 

相关文章

  • 简说设计模式之适配器模式

    前言:对于设计模式基础概念可以去看[简说设计模式之设计模式概述] 一、什么是适配器模式 适配器模式(Adapter...

  • 设计模式 - 目录

    设计模式01 - 单例模式 设计模式02 - 工厂模式 设计模式03 - 建造者模式 设计模式04 - 适配器模式...

  • 设计模式详解——适配器模式

    本篇文章介绍一种设计模式——命令模式。本篇文章内容参考《JAVA与模式》之适配器模式,Android设计模式源码解...

  • 设计模式之适配器模式

    设计模式之适配器模式 1. 模式定义 适配器模式又称包装器模式,属于结构型模式,它可以将一个接口转换成客户希望的另...

  • 最常用的设计模式---适配器模式(C++实现)

    适配器模式属于结构型的设计模式,它是结构型设计模式之首(用的最多的结构型设计模式)。 适配器设计模式也并不复杂,适...

  • iOS设计模式(5)策略模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(6)模板模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(7)建造者模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(4)抽象工厂模式

    设计模式系列文章 《iOS设计模式(1)简单工厂模式》《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器...

  • iOS设计模式(1)简单工厂模式

    设计模式系列文章 《iOS设计模式(2)工厂模式》《iOS设计模式(3)适配器模式》《iOS设计模式(4)抽象工厂...

网友评论

      本文标题:《设计模式》之适配器模式

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