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

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


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


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

设计:

示例代码:

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();
    }
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值