结构型模式之桥模式(Bridge)

桥接模式,是一个两层抽象模式,涉及两个主体,调用方和被调用方,桥接模式可以使得双方的各自实现都可以自由变换,而不必顾及另一方,可以产生多种组合协同工作,体现出极大的可扩展性。


Java标准库中,InputStreamReader使用了桥模式,用于将字节流转换为字符流,OutputStreamWriter使用了桥模式,用于将字符流转换为字节流。


场景:电脑需要CPU工作,电脑品牌有联想、宏碁等,CPU品牌有Intel、AMD等。

设计:

结构型模式之桥模式(Bridge)_第1张图片

示例代码:

interface CPU {
    void run();
}
class IntelCPU implements CPU {
    @Override
    public void run() {
        System.out.println("IntelCPU is working ...");
    }
}
class AMDCPU implements CPU {
    @Override
    public void run() {
        System.out.println("AMDCPU is working ...");
    }
}
abstract class Computer {
    private CPU cpu;
    public Computer(CPU cpu) {
        this.cpu = cpu;
    }
    public void work() {
        cpu.run();
        concreteWork();
    }
    protected abstract void concreteWork();
}
class Lenovo extends Computer {
    public Lenovo(CPU cpu) {
        super(cpu);
    }
    @Override
    protected void concreteWork() {
        System.out.println("Lenovo 电脑正在工作 ...");
    }
}
class Acer extends Computer {
    public Acer(CPU cpu) {
        super(cpu);
    }
    @Override
    protected void concreteWork() {
        System.out.println("Acer 电脑正在工作 ...");
    }
}
public class Test {
    public static void main(String[] args) {

        CPU intelCPU = new IntelCPU();
        CPU amdcpu = new AMDCPU();

        Computer lenovo = new Lenovo(intelCPU);//Lenovo电脑使用IntelCPU
        Computer acer = new Acer(intelCPU);//Acer电脑使用IntelCPU

//        lenovo = new Lenovo(amdcpu);//Lenovo电脑使用AMDCPU
//        acer = new Acer(amdcpu);//Acer电脑使用AMDCPU

        //工作
        lenovo.work();
        acer.work();
    }
}


你可能感兴趣的:(结构型模式之桥模式(Bridge))