桥接模式
为了避免直接继承带来的子类爆炸
将抽象与实现解耦,让它们可以独立变化
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
40abstract class Car {
constructor(engine) {
this.engine = engine
}
drive()
}
class Engine {
start()
}
abstract class RefinedCar extends Car {
constructor(engine) {
super(engine)
}
drive() {
this.engine.start()
}
getBrand();
}
class BossCar extends RefinedCar {
constructor(engine) {
super(engine)
}
getBrand() {
return 'boss'
}
}
class HybridEngine implements Engine {
start() {
console.log('hybrid engine start')
}
}
// 使用
let car = new BossCar(new HybridEngine())
car.drive()
// 这里面的桥指的是 Car 与 Engine之间的桥缺点:对高内聚的类使用该模式可能会使代码更复杂
适配器模式对比
- 适配器模式主要解决两个已经有接口间的匹配问题,主要是适配
- 桥接模式主要是构建桥梁,桥两边的都可以灵活改变
- 主要用于的软件开发时机不一样,桥接模式通常用于开发前期,适配器模式通常用于对已有的使用时期,通常不会对原有的接口做改变