一、核心作用:
处理多层继承结构,处理多维度变化的场景,将各维度设计为独立的继承结构,使每个维度可以独立扩展
二、常见应用场景:
1、JDBC驱动
2、AWT中的Peer架构
未采用桥接模式可能会出现多重继承,复用性差,类的数量也过多
三、代码示例:
品牌类:
package com.hezeu.bridge;
/**
* @Classname Brand
* @Description TODO
* @Date 2020/2/23 上午 12:42
* @Created by 朱进博 1724282894@qq.com
*/
public interface Brand {
void sale();
}
class Lenovo implements Brand{
@Override
public void sale() {
System.out.println("销售联想电脑");
}
}
电脑类型类:
package com.hezeu.bridge;
/**
* @Classname Computer02
* @Description TODO
* @Date 2020/2/23 上午 01:13
* @Created by 朱进博 1724282894@qq.com
*/
public class Computer02 {
protected Brand brand;
public Computer02(Brand brand) {
this.brand = brand;
}
public void sale(){
brand.sale();
}
}
class Desktop2 extends Computer02{
public Desktop2(Brand brand) {
super(brand);
}
@Override
public void sale() {
super.sale();
System.out.println("销售台式机");
}
}
测试类:
package com.hezeu.bridge;
/**
* @Classname Client02
* @Description TODO
* @Date 2020/2/23 上午 01:17
* @Created by 朱进博 1724282894@qq.com
*/
public class Client02 {
public static void main(String[] args) {
Computer02 c = new Desktop2(new Lenovo());
c.sale();
}
}
四、桥接模式优缺点:
优点:
- 桥接模式可以取代多层继承方案,多层继承违背了单一职责原则,复用性较差,类的个数过多,桥接模式可以减少子类个数,降低管理和维护成本
- 提高了系统可扩展性,可以任意扩展,不需要修改原来的系统,符合开闭原则
- 分离抽象接口及其实现部分
缺点:
- 桥接模式的引用会增加系统的理解与设计难度,由于聚合关联关系建立在抽象层,要求开发者针对抽象进行设计和编程
- 要求开发者正确识别出系统中两个独立的变化维度,因此使用范围有一定的局限性
感谢阅读,水平有限,如有错漏,还请不吝赐教