意图:将抽象部分与实现部分分离,使他们可以独立变化
比较形象的例子就是电脑品牌和电脑类型(笔记本和台式机),抽象谁都不好,因为增加某一个类型或品牌时就需要创建大量的类,桥接模式的思想就是将他们都抽象,就可以达到独立变化
电脑品牌
public interface Brand {
void sale();
}
Dell
public class Dell implements Brand {
@Override
public void sale() {
Log.e("tag","销售DELL品牌电脑");
}
}
联想
public class Lenovo implements Brand {
@Override
public void sale() {
Log.e("tag","销售联想品牌电脑");
}
}
Computer
public class Computer {
public Brand brand;
public Computer(Brand brand) {
this.brand = brand;
}
public void sale(){
brand.sale();
}
}
台式机
public class Desktop extends Computer {
public Desktop(Brand brand) {
super(brand);
}
@Override
public void sale() {
super.sale();
Log.e("tag", "台式机电脑");
}
}
笔记本
public class Laptop extends Computer {
public Laptop(Brand brand) {
super(brand);
}
@Override
public void sale() {
super.sale();
Log.e("tag","笔记本电脑");
}
}
调用
/**
* 桥接模式
*/
private void bridge() {
Brand b = new Lenovo();
Computer c = new Laptop(b);
c.sale();
}
