设计模式——桥接模式(Bridge Pattern)+ Spring相关源码

一、桥接模式定义

类型: 结构型模式
目的: 将抽象和实现分离,使它们都可以独立的变化。

其实这种模式我们经常使用,无非就是接口/抽象类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 {}

三、其他设计模式

创建型模式
结构型模式

行为型模式

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

码鹿的笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值