博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
桥接模式-pattern系列
阅读量:5921 次
发布时间:2019-06-19

本文共 565 字,大约阅读时间需要 1 分钟。

桥接模式

桥梁模式的用意是"将抽象化(Abstraction)与实现化(Implementation)脱耦,使得二者可以独立地变化"。这句话有三个关键词,也就是抽象化、实现化和脱耦。

  • 抽象化
    存在于多个实体中的共同的概念性联系,就是抽象化。作为一个过程,抽象化就是忽略一些信息,从而把不同的实体当做同样的实体对待。
  • 实现化
    抽象化给出的具体实现,就是实现化。
  • 脱耦
    所谓耦合,就是两个实体的行为的某种强关联。而将它们的强关联去掉,就是耦合的解脱,或称脱耦。在这里,脱耦是指将抽象化和实现化之间的耦合解脱开,或者说是将它们之间的强关联改换成弱关联。

桥梁模式中的所谓脱耦,就是指在一个软件系统的抽象化和实现化之间使用组合/聚合关系而不是继承关系,从而使两者可以相对独立地变化。

例子:

一个杯子,它有形状,有颜色,我们得到下面图的关系,虽然我们单独把颜色和形状抽象出来了,担当我们新出现一种颜色的时候,我们需要新增出和形状的实现进行组合的全部类。
%E6%A1%A5%E6%8E%A5%E6%A8%A1%E5%BC%8F1.jpg

这个是提供的桥接模式的解决方案的类图:

%E6%A1%A5%E6%8E%A5%E6%A8%A1%E5%BC%8F2.jpg

解释地址:

因为前面提到在颜色和形状的上面是一个杯子的抽象,所以我想在实际使用中我们更多的可能是,将多个不同类型的实现部分抽象后,以组合的关系进行关联。

%E6%A1%A5%E6%8E%A5%E6%A8%A1%E5%BC%8F3.jpg

我们可以看见shape 和 color (实现)可以扩展,cup的种类(抽象)也可以扩展。

转载地址:http://dnivx.baihongyu.com/

你可能感兴趣的文章
13.文档模板架构
查看>>
Linux-软件安装管理
查看>>
C# DataTable的詳細用法
查看>>
spring集成mybatis的mybatis参考配置
查看>>
Coursera机器学习编程作业Python实现(Andrew Ng)—— 1.1 Linear regression with one variable...
查看>>
总结一些写毕业论文背景研究可以参考的资源
查看>>
IE中的CSS3不完全兼容方案
查看>>
centos6中iptables单机网络防火墙的使用
查看>>
剑指offer——面试题5:替换空格
查看>>
【我所理解的Cocos2d-x】第六章 精灵Sprite 读书笔记
查看>>
java面试题整理二(转灰灰+灰灰)
查看>>
Sequelize-nodejs-4-Model usage
查看>>
CSS3制作心形头像
查看>>
电子自旋
查看>>
虚拟环境virtualenv
查看>>
连续子数组的最大和
查看>>
把MacBook里的电影导入到iPad
查看>>
数据挖掘过程中:数据预处理
查看>>
JavaScript高级程序设计(第三版)学习笔记6、7章
查看>>
jQuery-DOM操作之创建、插入、删除元素
查看>>