javascript设计模式 – 桥接模式原理与应用实例分析

 更新时间:2020年04月13日 14:13:13   作者:李小强  
这篇文章主要介绍了javascript设计模式 – 桥接模式,结合实例形式分析了javascript桥接模式基本概念、原理、用法及操作注意事项,需要的朋友可以参考下

本文实例讲述了javascript设计模式 – 桥接模式原理与应用。分享给大家供大家参考,具体如下:

介绍:如果软件系统中某个类存在两个或多个独立变化的维度,可以通过桥接模式将这些维度分离出来,使两者可以独立扩展,让系统更符合单一职责原则。

定义:将抽象部分与其实现部分分离,使他们都可以独立的变化。它是一种对象结构型模式,又称为柄体模式或接口模式。

场景:我们做一个简单的画圆,将圆的半径和颜色这两个维度进行分离,使每一个维度都可以单独扩展,很多同学都说这么简单一个需求我5行代码就实现了。为什么写这么啰嗦一套。
我们这里分享的是设计思想,当你的系统足够复杂时需要用什么样的方式进行优化。作为示例,也只是用最小的例子把道理讲明白,不是说所有类似的地方就必须这么写。什么样的场景需要什么样的模式,需不需要用模式需要你自己去考量。

示例:

var CircularColor = {};
CircularColor.redCircular = function(){
  this.getColor = function(){
    return 'red';
  }
}
CircularColor.greenCircular = function(){
  this.getColor = function(){
    return 'green';
  }
}
 
var CircularRadius = {};
CircularRadius.small = function(){
  this.x = this.y = 0;
  this.radius = 5;
  this.color = null;
  this.setColor = function(circularColor){
    this.color = circularColor.getColor();
  }
  this.draw = function(){
    console.log('画一个小圆!颜色:' + this.color + ' 原点坐标:x:' + this.x + ' y:' + this.y + ' 半径:' + this.radius);
  }
}
CircularRadius.big = function(){
  this.x = this.y = 0;
  this.radius = 20;
  this.color = null;
  this.setColor = function(circularColor){
    this.color = circularColor.getColor();
  }
  this.draw = function(){
    console.log('画一个大圆!颜色:' + this.color + ' 原点坐标:x:' + this.x + ' y:' + this.y + ' 半径:' + this.radius);
  }
}
 
var color = new CircularColor.redCircular();
var radius = new CircularRadius.big();
radius.setColor(color);
radius.draw();//画一个大圆!颜色:red 原点坐标:x:0 y:0 半径:20

这节需要说一个点,桥接模式在java的介绍里,独立之后的维度是在抽象层会建立关联关系,js没有抽象层,所以两个独立维度通过一个setColor方法建立关联关系。

桥接模式总结:

优点:

* 桥接模式提高了系统的可扩展性,在两个变化维度中任意扩展一个维度,都不需要修改原有系统,符合开关原则。
* 多数情况下,桥接模式可以取代多层集成方案。
* 分离接口及其实现部分,使得实现可以沿着各自的维度来变化。

缺点:

* 桥接模式的使用会增加系统的理解与设计难度。
* 桥接模式要求正确识别出系统中两个独立变化的维度,因此其使用范围具有一定的局限性。

适用场景:

* 一个类存在两个或多个独立变化的维度,且这些维度都需要独立进行扩展。

感兴趣的朋友可以使用在线HTML/CSS/JavaScript代码运行工具http://tools.jb51.net/code/HtmlJsRun测试上述代码运行效果。

更多关于JavaScript相关内容感兴趣的读者可查看本站专题:《javascript面向对象入门教程》、《JavaScript错误与调试技巧总结》、《JavaScript数据结构与算法技巧总结》、《JavaScript遍历算法与技巧总结》及《JavaScript数学运算用法总结

希望本文所述对大家JavaScript程序设计有所帮助。

相关文章

  • 小程序实现抽奖动画

    小程序实现抽奖动画

    这篇文章主要为大家详细介绍了小程序实现抽奖动画,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • dedecms页面如何获取会员状态的实例代码

    dedecms页面如何获取会员状态的实例代码

    下面小编就为大家带来一篇dedecms页面如何获取会员状态的实例代码。一起跟随小编过来看看吧,希望对大家有所帮助。
    2016-03-03
  • js判断当前浏览器类型,判断IE浏览器方法

    js判断当前浏览器类型,判断IE浏览器方法

    这篇文章主要介绍了js判断当前浏览器类型,判断IE浏览器方法,需要的朋友可以参考下
    2014-06-06
  • JS动态插入脚本和插入引用外部链接脚本的方法

    JS动态插入脚本和插入引用外部链接脚本的方法

    js 动态插入脚本的是在页面加载时不存在,但将来的某一时刻通过修改该 DOM 动态添加的脚本。接下来通过本文给大家介绍JS动态插入脚本和插入引用外部链接脚本,需要的朋友可以参考下
    2018-05-05
  • 浅谈下拉菜单中的Option对象

    浅谈下拉菜单中的Option对象

    Option 对象代表 HTML 表单中下拉列表中的一个选项。在 HTML 表单中 <option> 标签每出现一次,一个 Option 对象就会被创建。您可通过表单的 elements[] 数组访问一个 Option 对象,或者通过使用 document.getElementById()。
    2015-05-05
  • javascript-简单的日历实现及Date对象语法介绍(附图)

    javascript-简单的日历实现及Date对象语法介绍(附图)

    主要是对Date对象的使用,首先回忆一下Date对象的参数及方法,代码如下,感兴趣的朋友可以参考下哈
    2013-05-05
  • FF下zoom的替代方案 单位em

    FF下zoom的替代方案 单位em

    css 属性zoom是ie私有属性 在FF中(或者说仅实现CSS标准的其他浏览器中)无法使用,一直在网上搜索它的替代方案,但没有收获,后来听群里有朋友说em或可解决此问题,经过研究和测试,发现果然可以解决。
    2008-08-08
  • javascript动态分页的实现方法实例

    javascript动态分页的实现方法实例

    最近的项目需要添加一个分页导航的功能,没有用网上封装好的文件,通过JS自己简单实现了效果,这篇文章主要给大家介绍了关于javascript动态分页的实现方法,需要的朋友可以参考下
    2022-06-06
  • 通过JS获取用户本地图片路径并显示的代码

    通过JS获取用户本地图片路径并显示的代码

    通过JS获取用户本地图片路径并显示的代码,多用于本地上传图片的预览效果
    2012-02-02
  • 使用Turn.js实现翻书效果的完整步骤

    使用Turn.js实现翻书效果的完整步骤

    最近项目经理我个项目练练手,其项目需求是要实现翻书效果,下面这篇文章主要给大家介绍了关于使用Turn.js实现翻书效果的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2023-12-12

最新评论