前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >抽丝剥茧——桥接设计模式

抽丝剥茧——桥接设计模式

作者头像
石的三次方
发布2021-01-05 22:31:53
2390
发布2021-01-05 22:31:53
举报
文章被收录于专栏:石的三次方石的三次方

桥接设计模式

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

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

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

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

  • 实现类
  • 抽象类

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

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

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

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

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

  • 行为实现
代码语言:javascript
复制
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系列手机");
    }
}
代码语言:javascript
复制
abstract class Model{
    protected Mi mi ;
    public Model(Mi mi){
        this.mi = mi ;
    }
    abstract void play() ;
}
  • 具体实现类
代码语言:javascript
复制
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个设计模式,不过看到这里,兄弟们应该可以感觉的出来,设计模式是将一个问题复杂化,将系统解耦,让系统的扩展性变得更加的优雅。通过引入一个中间层,通过聚合的方式等等实现程序解耦。这个时候我们也会想到一个很重要的问题,时间换空间,空间换时间,也是类似,牺牲一方成就一方。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-15,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 石的三次方 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 桥接设计模式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档