简介
桥接模式是结构型模式的一种,其实现主要是通过一个桥梁将各维度桥接起来。举个例子:对于汽车,有汽车品牌(比如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
*/
}
}