桥接模式——NWU_LK

桥接模式

桥接模式

桥接模式将抽象部分与它实现部分分离,使它们都可以独立地变化。桥接模式是结构型设计模式。我们都去买过手机,手机按照品牌分可以分为华为、小米、oppo、vivo等品牌,如果这些手机按照内存分又可以分为4G、6G、8G等等。假如我们每一种手机都想要玩一下,至少需要4*3个。这对我们来说这些手机也太多了,竟然有12个,最主要的是手机品牌和内存是放在一起的。现在有这样一种机制,手机牌品商是一个公司,做手机内存的是一个公司,想要做什么手机我们只需要让其两者搭配起来即可。有点类似于全球贸易分工明确的思想,这就是桥接模式,把两个不同维度的东西桥接起来。

桥接模式类图

在这里插入图片描述
(1)Abstraction(抽象类):指的是手机抽象类

(2)Refined Abstraction(具体类):指的是具体手机品牌

(3)Implementor:在这里相当于手机的其他组件,内存

(4)ConcreteImplementor:具体的内存型号。

手机内存实例
  1. 定义接口Implementor
interface Memory{
    void setMemory();
}
  1. 定义接口的实现类ConcreteImplementor
class Memory_6G implements Memory{
    @Override
    public void setMemory() {
        System.out.println("内存设置为6G");
    }
}
class Memory_4G implements Memory{
    @Override
    public void setMemory() {
        System.out.println("内存设置为4G");
    }
}
  1. 定义手机抽象类Abstraction
abstract class Phone{
    private Memory memory;
    public Phone(Memory memory){
        this.memory=memory;
        this.memory.setMemory();
    }
    public abstract void open();
    public abstract void close();
    public abstract void call();
}
  1. 定义不同品牌的手机
class HUAWEI extends Phone{
    public HUAWEI(Memory memory) {
        super(memory);
    }
    @Override
    public void open() {
        System.out.println("华为开机");
    }
    @Override
    public void close() {
        System.out.println("华为关机");
    }
    @Override
    public void call() {
        System.out.println("华为打电话");
    }
}
class XIAOMI extends Phone{
    public XIAOMI(Memory memory) {
        super(memory);
    }
    @Override
    public void open() {
        System.out.println("小米开机");
    }
    @Override
    public void close() {
        System.out.println("小米关机");
    }
    @Override
    public void call() {
        System.out.println("小米打电话");
    }
}
  1. 测试生产华为的4G手机和小米的6G手机
@Test
    public void test(){
        Phone phone=new HUAWEI(new Memory_4G());
        Phone phone2=new XIAOMI(new Memory_6G());
    }
桥接模式与继承的对比

继承是一种强耦合关系,子类与父类有非常紧密的依赖关系,父类的任何变化都会导致子类发生变化。因此才使用桥接模式,使用了桥接模式之后,我们的两个维度就像桥梁一样被链接了起来。体现了松耦合的特性。

桥接模式的优点

(1)分离抽象和实现部分:把手机、内存抽象出来。实现与之分离。

(2)松耦合:两个维度分开

(3)单一职责原则:每个维度各干各的活

在JAVA中的实现

JDBC的Connection是一个接口,它对不同的数据库有不同的实现,其用到了桥接模式,和driverManager形成桥梁。
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值