桥接设计模式

本文介绍了桥接设计模式,旨在解决抽象层与实现层之间的紧密耦合问题,提高系统的扩展性。通过引入一个中间桥接层,实现了两者之间的独立,使得修改或扩展某一部分不会影响另一部分。文中以小米手机型号为例,展示了如何使用桥接模式将手机型号(抽象层)与具体手机型号(实现层)分离,并提供了相关的代码实现。
摘要由CSDN通过智能技术生成

桥接设计模式

今天我们来学习一个新的设计模式,桥接设计模式。它关注的点是将实现和抽象分层独立,互相不影响,可以独立进行扩展

我们先来看一下传统的干活方式,不使用桥接,让抽象层和实现层建立关系。

这里选用了小米手机的型号,可以看到无论是使用继承环视聚合的方式,抽象层和实现层之间均不相互独立,当有一者发生改变的时候,与之相关联的就会发生改变。也正是因为这个原因出现了桥接设计模式。

我们来具体看一下桥接设计模式的特点。

  • 实现类
  • 抽象类

我们来看一下桥接设计模式的UML图

它的主要特点就是在实现层和抽象层之间切入了一层,把这一层当作了桥,使用到具体的实现类,将之传入即可,两者互相分离,独立。扩展方便。

基于上述的原理图,我们来改良一下开篇的小米手机型号的问题。

我们引入了一个Model作为实现层和抽象层之间沟通的桥梁,通过构造参数将对应的实现类传入,实现具体的操作。

我们来看一下具体的代码实现。

  • 行为实现
interface Mi {
    void play();
}

class Note extends Model{
    public Note(Mi mi) {
        super(mi);
    }

    @Override
    void play() {
        super.mi.play();
        System.out.println("这是Note系列手机");
    }
}

class Redme extends Model{
    public Redme(Mi mi) {
        super(mi);
    }

    @Override
    void play() {
        super.mi.play();
        System.out.println("这是RedMe系列手机");
    }
}

class Mix extends Model{
    public Mix(Mi mi) {
        super(mi);
    }

    @Override
    void play() {
        super.mi.play();
        System.out.println("这是Mix系列手机");
    }
}
abstract class Model{
    protected Mi mi ;
    public Model(Mi mi){
        this.mi = mi ;
    }
    abstract void play() ;
}
  • 具体实现类
class Note4 implements Mi{
    @Override
    public void play() {
        System.out.println("这是Note4");
    }

}


class RedmePro20 implements Mi{

    @Override
    public void play() {
        System.out.println("这是RedmePro20");
    }

}


class Mix3 implements Mi{
    @Override
    public void play() {
        System.out.println("这是Mix3");
    }
}

最后,桥接设计模式结束了。这是第6个设计模式,不过看到这里,兄弟们应该可以感觉的出来,设计模式是将一个问题复杂化,将系统解耦,让系统的扩展性变得更加的优雅。通过引入一个中间层,通过聚合的方式等等实现程序解耦。这个时候我们也会想到一个很重要的问题,时间换空间,空间换时间,也是类似,牺牲一方成就一方。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值