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