桥接模式
定义
-
将抽象部分和它的实现部分分离,使它们都可以独立的变化。
-
处理多层继承结构、处理多维变化的场景,将各个维度设计成独立的继承结构,使各个维度可以独立的扩展在抽象层建立关联。
优点
- 比多继承的方案更好,极大的减少了子类的个数,从而降低管理和维护的成本。
- 提高了系统的可扩充性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统,符合开闭原则。
缺点
- 增加系统的理解和设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象设计和编程。
- 要求正确识别出系统中两个独立变化的维度,因此使用范围具有一定的局限性。
适用场景
- Java语言通过Java虚拟机实现了跨平台
- JDBC驱动程序
代码
//品牌
public interface Brand {
void info();
}
//电脑
public abstract class Computer {
protected Brand brand;
public Computer(Brand brand) {
this.brand = brand;
}
public void info() {
brand.info();
}
}
//苹果名牌
public class Apple implements Brand {
@Override
public void info() {
System.out.println("苹果");
}
}
//联想品牌
public class Lenovo implements Brand {
@Override
public void info() {
System.out.println("联想");
}
}
//台式电脑
public class Desktop extends Computer {
public Desktop(Brand brand) {
super(brand);
}
@Override
public void info() {
super.info();
System.out.println("台式机");
}
}
//笔记本
public class Laptop extends Computer {
@Override
public void info() {
super.info();
}
public Laptop(Brand brand) {
super(brand);
System.out.println("笔记本");
}
}
public class Test {
public static void main(String[] args) {
//苹果笔记本
Computer computer1 = new Laptop(new Apple());
computer1.info();
//联想台式机
Computer computer2 = new Desktop(new Lenovo());
computer2.info();
}
}