文章目录
一、桥接模式定义
类型: 结构型模式
目的: 将抽象和实现分离,使它们都可以独立的变化。
其实这种模式我们经常使用,无非就是接口/抽象类 和 JAVA组合的经典应用。
二、定义
2.1 举个例子
我们定义个手机类,假设我们每增加一个品牌型号或更换配件就要扩展新类,就会导致类爆炸问题。
所以这里我们就要用JAVA组合代替继承去扩展新类。
2.1.1 定义Phone类 、 SoC类、Screen类
桥接类Phone
public class Phone{
// 成员变量
private String brand; // 手机品牌
private String model; // 手机型号
private SoC soc;
private Screen screen;
private long price; //价格
public Phone(String brand, String model, SoC soc, Screen screen, long price) {
this.brand = brand;
this.model = model;
this.soc = soc;
this.screen = screen;
this.price = price;
}
}
处理器抽象类
public abstract class SoC{
String model; //型号
public SoC(String model) {
this.model = model;
}
}
屏幕抽象类
public abstract class Screen{
String model; //型号
public Screen(String model) {
this.model = model;
}
}
2.1.2 定义SoC和Screen实现类
处理器实现类
public class Qualcomm extends SoC {}
屏幕实现类
public class OLED extends Screen {}
2.1.3 使用Phone桥接SoC和Screen实现类
Qualcomm q680 = new Qualcomm("骁龙680")
OLED oled = new OLED("6.67 英寸OLED直屏")
new Phone("华为", "nove 11 se", q680, oled, 199900)
Qualcomm q778g = new Qualcomm("骁龙778G")
OLED oled2 = new OLED("6.67 英寸OLED 柔性直屏")
new Phone("小米", "Redmi Note 12 Pro 极速版", q778g, oled2, 199900)
2.2 JDK源码——AbstractSelectableChannel
public abstract class AbstractSelectableChannel extends SelectableChannel {
private final SelectorProvider provider;
private SelectionKey[] keys = null;
}
SelectorProvider 实现类
public abstract class SelectorProviderImpl extends SelectorProvider {}
public class WEPollSelectorProvider extends SelectorProviderImpl {}
public class WindowsSelectorProvider extends SelectorProviderImpl {}
SelectionKey 实现类
public abstract class AbstractSelectionKey extends SelectionKey {}
public final class SelectionKeyImpl extends AbstractSelectionKey {}
2.3 Spring源码——DataSourceTransactionManager
public class DataSourceTransactionManager extends AbstractPlatformTransactionManager implements ResourceTransactionManager, InitializingBean {
@Nullable
private DataSource dataSource;
}
DataSource实现类
public abstract class AbstractDataSource implements DataSource {}
public abstract class AbstractDriverBasedDataSource extends AbstractDataSource {}
public class SimpleDriverDataSource extends AbstractDriverBasedDataSource{}
public class HikariDataSource extends HikariConfig implements DataSource, Closeable {}
三、其他设计模式
创建型模式
结构型模式
行为型模式
- 1、设计模式——访问者模式(Visitor Pattern)+ Spring相关源码
- 2、设计模式——中介者模式(Mediator Pattern)+ JDK相关源码
- 3、设计模式——策略模式(Strategy Pattern)+ Spring相关源码
- 4、设计模式——状态模式(State Pattern)
- 5、设计模式——命令模式(Command Pattern)+ Spring相关源码
- 6、设计模式——观察者模式(Observer Pattern)+ Spring相关源码
- 7、设计模式——备忘录模式(Memento Pattern)
- 8、设计模式——模板方法模式(Template Pattern)+ Spring相关源码
- 9、设计模式——迭代器模式(Iterator Pattern)+ Spring相关源码
- 10、设计模式——责任链模式(Chain of Responsibility Pattern)+ Spring相关源码
- 11、设计模式——解释器模式(Interpreter Pattern)+ Spring相关源码