适配器模式

  • 定义:作用两个不兼容的接口之间的桥梁
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
33
34
35
36
37
38
39
40
// 同类型
class RoundHole {
constructor() {}
getRadius() {}
fits(peg) {
return this.Radius() >= peg.getRadius()
}
}
class RoundPeg {
constructor(width) {
this.width = w
}
getRadius() {}
}
// 不同类型
class SquarePeg {
constructor() {}
getWidth() {}
}
// 适配器类
class SquarePegAdapter extends RoundPeg {
constructor() {
this.peg = peg
}
getRadius() {
return this.peg.getWidth()* Math.sqrt(2) /2
}
}

// 使用

let hole = new RoundHole(5)

let smallSqpeg = new SquarePeg(5)
let largeSqpeg = new SquarePeg(10)
let smallAdapter = new SquarePegAdapter(smallSqpeg)
let largeAdapter = new SquarePegAdapter(largeSqpeg)

hole.fits(smallAdapter) // true
hole.fits(largeAdapter) // false
  • 缺点: 复杂度增加,需要对适配的地方添加适配器类
  • 优点:
    • 单一职责原则
    • 开闭原则