桥接模式(Bridge Pattern)

桥接 用于把抽象化与实现化解耦,通过提供抽象化和实现化之间的桥接结构,实现两者解耦,使得两者可以独立变化。

【需求】:类存在依赖关系,且两者都存在多个子类。
(如形状和颜色,形状依赖于颜色,形状存在圆形,方形等;颜色存在红色,蓝色等)

【关键代码】:抽象 与 实现分离, 抽象类与抽象类交互。子类向上造型实现依赖。

【例】:

/** 颜色 */
interface Color {
    String name();
}
class Red implements Color {
    public String name() {
        return "红色";
    } 
}
class Blue implements Color {
  public String name() {
        return "蓝色";
    } 
}

/** 形状 */
abstract class Shape {
    protected Color color;

    public Shape(Color color) {
        this.color = color;
    }

    abstract void info();
}

class Cricle extends Shape {
    public Cricle(Color color) {
        super(color);
    }

    @Override
    void info() {
        System.out.println("这是一个" + color.name() + "的圆形");
    }
}
class Square extends Shape {
    public Square(Color color) {
        super(color);
    }

    @Override
    void info() {
        System.out.println("这是一个" + color.name() + "的方形");
    }
}

public class BridgePatternDemo {

    public static void main(String[] args) {
        Red red = new Red();
        Blue blue = new Blue();

        Cricle cricle = new Cricle(red);
        Square square = new Square(blue);

        cricle.info();//这是一个红色的圆形
        square.info();//这是一个蓝色的方形
    }
}

上述例子中,关键代码在于 Shape 抽象类中依赖Color(实现桥接),实现抽象与抽象交互,抽象与实现解耦。实现高扩展性。


roylion
204 声望25 粉丝

读书破万卷