桥接模式
桥接模式:将实现与抽象放在不同的层次中,是的两个层次可以独立变化。结构型设计模式。
原型类图
解析原理类图:
- Client类:桥接模式的调用者
- 抽象类(Abstraction):维护了Implementor,两者是聚合的关系。充当桥接类
- RefinedAbstraction:是抽象类的子类
代码实现
软件类:
//抽象类
public abstract class SoftWare {
public abstract void run();
}
//子类
public class Camera extends SoftWare {
public void run() {
System.out.println("相机正在启动");
}
}
public class Game extends SoftWare {
public void run() {
System.out.println("正在打LOL");
}
}
品牌类:
//抽象类
public abstract class Brand {
private SoftWare softWare;
public Brand(SoftWare softWare){
this.softWare = softWare;
}
protected void run(){
this.softWare.run();
}
}
//子类
public class Iphone extends Brand {
public Iphone(SoftWare softWare) {
super(softWare);
}
public void run(){
System.out.println("Iphone手机");
super.run();
}
}
client类:
public class Test {
public static void main(String[] args) {
Iphone iphone = new Iphone(new Game());
iphone.run();
//Iphone手机 正在打LOL
}
}
总结
实现了抽象和实现部分的分离,从而极大的提供了系统的灵活性,让抽象部分和实现部分独立分开来。这有助于进行分层设计。桥接模式代替多层方案,降低了系统的管理和维护成本。