(设计模式)5.适配器模式

197 阅读1分钟

说明:继续学习努力
PS:学习自---掘金的JavaScript设计模式核心原理与应用小册

一、概念

适配器模式通过把一个类的接口变换成客户端所期待的另一种接口,可以帮我们解决不兼容的问题。

二、代码案例

说明:当我们来到一个联合国世界,在这里我们可以体验之前没有经历过的生活,当然,这些都是需要花钱来买的。这个时候就有个问题,我们都是来自不同国家的人民,而这里想进去就得付入场费,并且只支持人民币。恰好我刚刚学了适配器模式,世界老大中国知道了之后就让我帮他们写一个适配器来解决这种问题。

/ 定义了一个世界
class World {
    goodLife(money) {
        console.log('好的生活有'+money+'人民币');
    }
    sadLife(money) {
        console.log('普通生活,没有人民币')
    }
    isSatisfied(type, money) {// 满足生活
        if(type === '¥'){ // 判断是否是人民币
            this.goodLife(money);    
        } else {
            this.sadLife(money);
        }
         
    }
}

// 定义适配器
class MoneyAdapter {
    static money;
    static type;
    static adapterSend(type, money){
        if(type === '$') { // 美元
            MoneyAdapter.money = 6.507 * money;
        } else if(type === '¥') { // 人民币
            MoneyAdapter.money = money
        } else if(type === 'J') { // 日元
            MoneyAdapter.money = money/16.6759;
        }
        MoneyAdapter.type = '¥'
    }
}
// 进行转换 美元也可以使用了
MoneyAdapter.adapterSend('$', 20);  //转换器转换了20美元
const people = new World()
people.isSatisfied(MoneyAdapter.type, MoneyAdapter.money) // 好的生活有130.14人民币

// 不进行转换
const people2 = new World()
people.isSatisfied('J', 10000000) // 普通生活没有人民币

解释说明:用户进入世界之前,如果说中国人,那么没有任何关系,不用使用适配器。如果是美国人或日本人,那么他们就必须使用适配器,否则他们的钱就不被承认等于废纸。