设计模式-结构型-桥接模式

143 阅读1分钟

简介

桥接模式是结构型模式的一种,其实现主要是通过一个桥梁将各维度桥接起来。举个例子:对于汽车,有汽车品牌(比如benz和volvo)和汽车类型(suv和mpv)两种,我们要销售的汽车包括benz-suv/benz-mpv/volvo-suv/volvo-mpv这几种。此时我们可以抽象一个品牌接口,将汽车品牌和汽车类型桥接起来,代码示例如下:

Demo示例

1.定义品牌的桥接接口,让benz和volvo品牌都实现这个接口

public interface CarBrand {
    void sale();
}
public class Benz implements CarBrand {
    @Override
    public void sale() {
        System.out.println("sale benz");
    }
}
public class Volvo implements CarBrand {
    @Override
    public void sale() {
        System.out.println("sale volvo");
    }
}

2.定义一个车类型的抽象类,将车品牌注入到该类中,所有车的类型都要实现该抽象类。

public abstract class CarType {
    protected CarBrand brand;

    public CarType(CarBrand brand) {
        this.brand = brand;
    }

    protected abstract void sale();
}
```java
public class Mpv extends CarType{
    public Mpv(CarBrand brand) {
        super(brand);
    }

    @Override
    protected void sale() {
        this.brand.sale();
        System.out.println("sale mpv");
    }
}
public class Suv extends CarType{

    public Suv(CarBrand brand) {
        super(brand);
    }

    @Override
    protected void sale() {
        this.brand.sale();
        System.out.println("sale suv");
    }
}

3.客户端调用

public class Test {
    public static void main(String[] args) {
        CarType benz = new Suv(new Benz());
        benz.sale();
        /**
         * sale benz
         * sale suv
         */

        CarType volvo = new Mpv(new Volvo());
        volvo.sale();
        /**
         * sale volvo
         * sale mpv
         */
    }
}