设想如果要绘制矩形、圆形、椭圆、正方形,我们至少需要4个形状类,但是如果绘制的图形需要具有不同的颜色,如红色、绿色、蓝色等,此时至少有如下两种设计方案:
- 第一种设计方案是为每一种形状都提供一套各种颜色的版本。
- 第二种设计方案是根据实际需要对形状和颜色进行组合。
第二种方案就是桥接模式
class Square {
color (coloring) {
console.log('正方形')
coloring()
}
}
class Round {
color (coloring) {
console.log('圆形')
coloring()
}
}
let selectColor = {
red () {
console.log('选染成红色')
},
green () {
console.log('选染成绿色')
},
}
let redSquare = new Square().color(selectColor.red)
let greenSquare = new Square().color(selectColor.green)
let redRound = new Round().color(selectColor.red)
let greenRound = new Round().color(selectColor.green)