设计模式(十二)-桥接模式

桥接模式

将抽象部分与其它的实现部分分离,这样抽象化与实现化解耦,使它们可以独立的变化.应用场景是实现系统可能有多个角度分类,每一个角度都可能变化.桥方可以通过实现桥接口进行单方面扩展,而另一方可以继承抽象类而单方面扩展,而之间的调用就从桥接口来作为突破口,不会受到双方拓展的任何影响.

  • 图例


    image.png
  • 代码示例
class Shape{
    constructor(bridge){
        this.bridge=bridge
    }
    render(){
       console.log(`创建${this.bridge.setColor()}的${this.draw()}`)
    }
    draw(){
        throw new Error('子类必须调用此方法')
    }
}
class Rect extends Shape{
    draw(){
        return '正方形'
    }
}
class Circle extends Shape{
    draw(){
        return '圆形'
    }
}

class Color{
    setColor(){
        throw new Error('子类必须调用此方法')
    }
}
class Red extends Color{
    setColor(){
        return '红色'
    }
}
class Green extends Color{
    setColor(){
        return '绿色'
    }
}
let red=new Red();
let green=new Green();
let shape=new Circle(red)
let shape1=new Rect(green)
shape.render() //创建红色的圆形  
shape1.render() //创建绿色的正方形
  • 应用场景
1.jquery的each
let each=function(arr,fn){
    for(let i=0;i
优点
把抽象与实现隔离开,实现松耦合.

你可能感兴趣的:(设计模式(十二)-桥接模式)