桥梁模式,我觉得是比较难理解的一个模式,它的定义很简单:将抽象和实现解耦,让它们可以独立变化。深刻理解却不容易。网上有很多案例,但这个模式如果以Demo来聊,我觉得无法学到它的精髓。这边以DubboTransporter层的设计来说说桥梁模式。

这个模式比较隐晦,挺难理解的。什么是抽象,什么是实现?它这里面的抽象指的不是抽象类或者接口。实现也不是指的具体实现类。

我这边来解释下Transporter层是怎么提现桥梁模式的,声明下:这只是我个人的理解和观点,并非官方给出。

Transporter层的的抽象是指,Dubbo抽象了一整套适合Dubbo的网络传输层的"类库"。比如:看下Transporter的接口代码。

@SPI("netty")// 默认使用netty服务器
public interface Transporter {// 抽象出了bind行为,这个行为要完成服务端口暴露的动作,并且返回Server抽象// 无论netty,mina,grizzly或者其他的一些服务器暴露接口的动作叫啥名字,这边都被抽象成了bind// Exchange层只需要给URL和handler就可以完成端口暴露的动作Server bind(URL url, ChannelHandler handler) throws RemotingException;// 抽象出了connect行为,这个行为要完成客户端与服务端的连接动作,并且返回Client抽象// 无论netty,mina,grizzly或者其他的一些服务器做客户端连接时叫啥名字,这边都被抽象成了connect// Exchange层只需要给URL和handler就可以完成端口暴露的动作Client connect(URL url, ChannelHandler handler) throws RemotingException;
}

Dubbo为每个服务器都做了Transporter的适配。看下面的类图结构。

除此之外,还有ServerClientEndPoint等都是Transporter层做出的抽象。看下:

// 对交互两端的抽象,分别是服务端和客户端。
public interface Endpoint {URL getUrl();ChannelHandler getChannelHandler();InetSocketAddress getLocalAddress();void send(Object message) throws RemotingException;void send(Object message, boolean sent) throws RemotingException;void close();void close(int timeout);void startClose();boolean isClosed();
}
// 对服务端的抽象
public interface Server extends Endpoint, Resetable {boolean isBound();Collection<Channel> getChannels();Channel getChannel(InetSocketAddress remoteAddress);
}
// 对客户端的抽象
public interface Client extends Endpoint, Channel, Resetable {void reconnect() throws RemotingException;
}

上述所举例子是Transporter层所提现的抽象,在来看下桥梁模式中的实现。实现指的是跟具体服务器相关的一套类库,分别NettyMinaGrizzly各自的类库。

这样的设计完全提现了桥梁模式的定义:将抽象和实现解耦,让它们可以独立变化。

查看全部 浅谈模式 - 汇总篇

浅谈模式 - 桥梁模式相关推荐

  1. 浅谈示波器X-Y模式 示波器触发模式及使用

    描述 示波器是一种用途十分广泛的电子测量仪器.它能把肉眼看不见的电信号变换成看得见的图像,便于人们研究各种电现象的变化过程.接下来我们就来了解一下示波器的X-Y模式以及示波器触发模式,同时了解一下两种 ...

  2. 建造者模式浅谈 与工厂模式的区别

    感谢您的阅读.如果感觉文章对您有用,麻烦您动动手指点个赞,以资鼓励.谢谢! 转载请注明出处哈 建造者模式浅谈 与工厂模式的区别_茄子_土豆的博客-CSDN博客_建造者模式和工厂模式的区别 创建对象时构 ...

  3. 浅谈Interpreter解释器模式

    一.前言 这是我们23个设计模式中最后一个设计模式了,大家或许也没想到吧,竟然是编译原理上的编译器,这样说可能不对,因为编译器分为几个部分组成呢,比如词法分析器.语法分析器.语义分析器.中间代码优化器 ...

  4. 浅谈Visitor访问者模式

    一.前言 什么叫访问,如果大家学过数据结构,对于这点就很清晰了,遍历就是访问的一般形式,单独读取一个元素进行相应的处理也叫作访问,读取到想要查看的内容+对其进行处理就叫作访问,那么我们平常是怎么访问的 ...

  5. 浅谈知识付费模式的兴起及意义

    近年来, 知识付费风生水起, 2016年被称为知识付费元年, 得到.喜马拉雅F.创客匠人等平台经过一段时间的酝酿, 均在这一年获得快速发展, 在用户数量.产品推出.产品销售等方面取得较大突破, 也引起 ...

  6. [置顶]       设计模式之结构类模式——桥梁模式

    桥梁模式(Bridge Patter)也叫做桥接模式,是一个比较简单的模式. 定义: 将抽象和实现解耦,使得两者可以独立地变化. 通用类图: ● Abstraction--抽象化角色 它主要的职责是定 ...

  7. 浅谈设计模式-桥接模式

    书接上回,本篇讲一下结构型模式-桥接设计模式 桥接设计模式 定义:将抽象部分与它的具体实现部分分离,使他们都可以独立的变化 实现:通过组合的方式建立两个类之间联系,而不是继承 这里得解释什么事抽象部分 ...

  8. 【PS】浅谈PS颜色模式-RGB模式

    在Photoshop的[拾色器]中我们通常看到几种颜色的表达方式,分别为HSB.LAB.RGB.CMYK,另外还有16进制的RGB颜色表示.由于RGB颜色模式经常使用,所以笔者先从RGB开始讲起,过程 ...

  9. 浅谈Facade外观模式

    一. 基本概念 有些人可能炒过股票,但其实大部分人都不太懂,这种没有足够了解证券知识的情况下做股票是很容易亏钱的,刚开始炒股肯定都会想,如果有个懂行的帮帮手就好,其实基金就是个好帮手,支付宝里就有许多 ...

最新文章

  1. 系统架构设计:平滑发布和ABTesting
  2. CComboBox 类详细说明
  3. 【JDBC】实现对JDBC 连接的简单封装
  4. vscode 英伟达tk1_英伟达的未来,不只是GPU
  5. 卷积为什么如此强大?理解深度学习中的卷积
  6. 一个 redis 异常访问引发 oom 的案例分析
  7. 信息学奥赛C++语言:统计正数
  8. 【机器学习】无监督学习--(聚类)K-Means
  9. 《深入浅出DPDK》读书笔记(五):同步互斥机制
  10. ieee5节点系统图_存储系统的的关键技术之自精简技术
  11. C# 中用DES 对称Key,IV 加密,前端crypto.js 解密
  12. Element UI 官网以及其他技术文档
  13. 基于马尔可夫随机场的深度估计
  14. linux测试会使系统崩溃吗,fio 命令入门到跑路(千万不能在系统所在的分区测试硬盘性能)...
  15. Spring boot Redis 乱码
  16. Linux文件IO操作
  17. 【应用回归分析】CH3 回归参数的估计6——广义最小二乘估计
  18. 【元胞自动机】基于元胞自动机的人口疏散仿真matlab源码
  19. 58件女生想让男生知道的事情(男生必看)
  20. IDM +百度网盘不限速

热门文章

  1. 科研学术的写作环境搭配(LaTeX+VSCode+Sumatra PDF/Skim)Win/Mac通用
  2. 使用vant的 van-tabbar组件的一点心得
  3. 法院拍卖的房子你敢不敢买?
  4. 搞机:AS自带模拟器AVD Root 和 Xposed安装
  5. 玉环市礁门塘除险加固工程水闸扩建设计
  6. 超级账本学习之二:了解Peer
  7. 搜狐2009年第二季度财报电话会议实录(含我的评论)
  8. 如何修改C盘里windows\system32\drivers\etc里面的hosts文件并保存
  9. 【多图】【严肃的技术帖】用UE4做黑丝材质
  10. win10+vs2017+PCL1.8.1配置过程及注意事项