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

2021-02-20  本文已影响0人  仔崽06

桥接模式

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

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<arr.length;i++){
        let val=arr[i]
        if(fn.call(val,i,val,arr)){
            return false
        }
    }
}

let arr=[1,2,3,4]
each(arr,function(i,v,arr){
    arr[i]=v*2
})
优点
把抽象与实现隔离开,实现松耦合.
上一篇 下一篇

猜你喜欢

热点阅读