# 适配器模式

将一个类的接口转化为另外一个接口,以满足用户需求,使类之间接口不兼容问题通过适配器得以解决。

简单来说就是:

原有的接口已经不能满足现在的要求,我们又不想修改原来的接口,通过加一层适配器使其满足我们的需求(如二头插头转三头插头)

# 例子

有两种动物,🐱 和 🐕,他们都会吃饭,但是现在要让他们会飞,两种方法,一种是修改原来的类,给它加个技能(方法)让它能飞,这种方法当动物很多的时候,需要修改很多类,不利于维护。另外一种方法:我们给它装个适配器,使它升级成超级动物满足我们需要。

class Dog {
    constructor() {
        this.name = "Dog";
    }
    eat() {
        console.log(this.name + " is eating");
    }
}

class Cat {
    constructor() {
        this.name = "Cat";
    }
    eat() {
        console.log(this.name + " is eating");
    }
}

// 给动物装上翅膀,让他们能飞
function putOnWings(animal) {
    animal.prototype.fly = function() {
        console.log(this.name + " is flying");
    };
    return new animal();
}

let dog = putOnWings(Dog);
dog.fly(); // Dog is flying

let cat = putOnWings(Cat);
cat.fly(); // Cat is flying
cat.eat(); // Cat is eating
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32