桥接模式可以把抽象类和实现类进行各自封装和扩展,目的在于解耦。
由于桥接模式可以增强了组合性,我们可以很灵活地修改类,并且很好地重用。
我们可以先看一下简单的片断:

//这是一个演示简单的桥接模式片断(本例子只假设在标准浏览器情况下)

//先获取DOMvar DomA = document.getElementById('divA');

//给DomA绑定事件DomA.addEventListener('click',funcA,false);

//定义funcAfunction funcA(){var id = this.id;    alert("I'm HTMLElement, My ID is:" + id);}

以上的例子很简单,就是把一个DOM绑定了click事件,执行一个含有alert()的函数。
很明显,funcA能做的事只有两件:
1、获得元素的ID。
2、显示I'm HTMLElement, My ID is: divA。

funcA就是所谓的“写死”了,也就是强耦合,里面的alert()永远只是服务于funcA,大大失去了灵活性。
现在我们用桥接模式的思想,把funcA拆分,解耦。

//这是一个演示简单的桥接模式片断(本例子只假设在标准浏览器情况下)

//先获取DOMvar DomA = document.getElementById('divA');

//给DomA绑定事件DomA.addEventListener('click',funcA,false);

//这里把上例的funcA进行拆分出一个funcAlertfunction funcAlert(txt,id){    alert(txt+id);}

//定义funcAfunction funcA(){var id = this.id;    //桥接funcAlert函数    funcAlert("I'm HTMLElement ,My ID is:",id);}

好了,以后funcAlert()就可以作用于其他函数,只要给funcALert(),传入参数即可。
当然,本例只是为了演示而做了一个比较简单的拆分。er......看起来有点无谓。
不管如何,只是表达了桥接的思想。
其实就是把多个功能尽量拆分,解耦,做到可重用,然后在使用时,再拼装起来。将抽象部分与它的实现部分分离,使它们都可以独立变化,重用。就这是桥接模式的思想。

还记得我在分享单体模式吗?里面有一个这样的片断:

var XZB = (function(){var G = 10;var Return = {        getG:function(){return G;        },        setG:function(g){            G = g;        }    }return Return;})();

其实里面的Return也是一种解耦,只不过他的耦合度相对低一点而已。
里面的Return可以设定有N种方法来实现N种功能,只不过他们都只局限于操作里面的私有变量。

OK,讲完了桥装模式,我们来讲讲他的优缺点:
优点:
降低抽象层和具体实现之间的耦合,使各层独立出来管理。桥接模式成了各层的粘合剂。

缺点:
因为每个桥接都会调用外层的函数,这就需要往上搜索变量,会有性能上的影响。
还有一点,如果被桥接的函数只是在于桥接函数里面调用,而再也没被其他函数调用,这时就没必要桥接了。

写在最后,看完这个桥接模式之后,有没发现和我之前写的工厂模式有点相似,难道工厂模式就只是多了判断,然后选择性调用吗?
er...我也说不清,总言之,我觉得设计模式只是实现功能的代码写法,也并不是说什么功能就应该用什么模式,灵活运用才是王道。

转载于:https://www.cnblogs.com/zzbo/archive/2012/02/14/2350823.html

[设计模式]桥接模式相关推荐

  1. Python设计模式-桥接模式

    Python设计模式-桥接模式 基于Python3.5.2,代码如下 #coding:utf-8class Shape():name = ""param = "" ...

  2. 【学习笔记】ABAP OOD设计模式 - 桥接模式

    ABAP OOD设计模式 - 桥接模式 整理转自-<SAP ABAP 面向对象程序设计(原则.模式及实践)> 桥接模式又称为桥梁模式,在程序开发中,采用不同的维度分解一系列对象,然后采用组 ...

  3. 跟着ZHONGHuan学习设计模式--桥接模式

    转载请注明出处! ! !http://blog.csdn.net/zhonghuan1992 全部配套代码均在github上:https://github.com/ZHONGHuanGit/Desig ...

  4. 2.设计模式-桥接模式

    文章目录 一.使用场景 二.实现方法 三.优势与劣势 四.经典案例 本文笔记来自于: 狂神的设计模式 桥接模式是将抽象部分与它的实现部分分离,使它们都可以独立地变化.它是一种对象结构模型,又称为柄体( ...

  5. 设计模式--桥接模式(Bridge)

    设计模式–桥接模式(Bridge) 1.定义 桥接模式:将抽象部分与它的实现部分分离,使它们可以独立地变化. 2.实例 设想如果要绘制矩形.圆形.椭圆.正方形,我们至少需要4个形状类,但是如果绘制的图 ...

  6. linkin大话设计模式--桥接模式

    linkin大话设计模式--桥接模式 桥接模式是一种结构化模式,他主要应对的是:由于实际的需要,某个类具有2个或者2个以上维度的变化,如果只是使用继承将无法实现功能,或者会使得设计变得相当的臃肿.我们 ...

  7. 23种设计模式——桥接模式

    文章目录 23种设计模式--桥接模式 1.桥接模式概述 2.桥接模式结构 3.桥接模式的实现 4.桥接模式的注意事项和细节 23种设计模式--桥接模式 1.桥接模式概述 桥接模式介绍 桥接(Bridg ...

  8. 设计模式——桥接模式实验报告

    目录 设计模式--桥接模式实验报告 一.实验题目 二.所用模式结构视图 三.本实例类图 四.实例实现代码 1.抽象消息类 2.普通消息类 3.加急消息类 4.特急消息类 5.实现发送消息的统一接口: ...

  9. Java设计模式-桥接模式 理论代码相结合

    继Java设计模式-装饰器模式后的桥接模式出来了,感兴趣的话,就来看一看吧. 会了就当复习丫,不会来一起来看看吧. 很喜欢一句话:"八小时内谋生活,八小时外谋发展". 如果你也喜欢 ...

  10. 结合JDK源码看设计模式——桥接模式

    前言: 在我们还没学习框架之前,肯定都学过JDBC.百度百科对JDBC是这样介绍的[JDBC(Java DataBase Connectivity,java数据库连接)是一种用于执行SQL语句的Jav ...

最新文章

  1. wpf单容器中的Chrome
  2. python评分卡建模-实现WOE编码及IV值计算
  3. EF批量插入太慢?那是你的姿势不对
  4. mysql 视图 速度慢_mysql 视图查询速度慢
  5. eclipse中git的author和commiter的修改
  6. 【PHP面向对象(OOP)编程入门教程】20.PHP5接口技术(interface)
  7. scala中class,object,trait的区别
  8. php手机网站制作程序,phpcms制作手机WAP网站模板二次开发教程
  9. 绝对公平?破解北京机动车摇号的秘密
  10. 小糊涂家装预算软件 官方
  11. Unity - Timeline 之 Timeline Setting(Timeline的设置)
  12. p=p-next 表达了什么意思
  13. android studio + ndk + cmake + jna +sqlite c层报错SQLITE_CANTOPEN(14),SQLITE_MISUSE(21)问题
  14. 【zzuli期中考试】字母倒序
  15. 软件测试自我评价模版,软件测试工程师简历自我评价
  16. python入门——Python的两种编程语言:交互式和文件式
  17. 查看华三交换机设备信息命令
  18. 【计算机毕业设计】248高校奖学金管理系统
  19. 大学生Web开发一大作业(静态网页)
  20. Java 8中Collectors.toMap空指针异常源码分析

热门文章

  1. Win10技巧:16个系统优化设置小技巧,大幅度提升你的电脑性能!
  2. 计算机网络基础概念知识笔记
  3. IT 人永远不老,老程序员价值何在?
  4. 关于WCF、WebAPI、WCFREST、WebService之间的区别总结
  5. java生成动态验证码_动态生成验证码案例
  6. ios 刷新遮罩遮罩_在Adobe XD中进行遮罩的3种方法
  7. 如何忽略证书继续访问_前5个最容易被忽视的可访问性问题
  8. 利用CAGradientLayer自定义颜色渐变view
  9. Docker-machine创建虚机时停在虚机启动的提示上,并且创建的虚机显示Ip Not found...
  10. 5.1 入门整合案例(SpringBoot+Spring-data-elasticsearch) ---- good