JavaScript设计模式--桥梁模式引入操作实例分析


Posted in Javascript onMay 23, 2020

本文实例讲述了JavaScript设计模式--桥梁模式引入操作。分享给大家供大家参考,具体如下:

1.使用情况

(1)事件的监控

#1,利用页面的button来选择宠物的例子(思路)

button.addEvent(element,"click",getPetByBame);
  function getPetByBame(e){
    var id = this.id;
    asyncRquest("GET",'pet.action?id='+id,function(pet){
      consols.log("request pet"+pet.resopnseText)
    })
  }

#2,addEvent函数

/*obj:需要增加事件的对象
* type:事件名称
* fn:执行事件的函数
* */
function addEvent(obj,type,fn){//addEvent:为某个文档节点增加事件的方法
  if(obj.addEventListener){//Mozilla中:
    obj.addEventListener(type,fn,false);
  }else if(obj.attachEvent){//IE中:
    obj["e"+type+fn] = fn;
    obj[type+fn] = function(){
      obj["e"+type+fn]()
    }
    obj.attachEvent("on"+type,fn)
  }
}

总结:该种方式对于单元测试很难进行

改进为用简单的桥梁模式来解决

#1,后台中的api

function getPetByBame(id,callBack){
    sayncRquest("GET",'url?id='+id,function(pet){
      callBack(pet)
    })

#2,桥梁

//定义一个桥梁叫抽象和实现相互联系在一起
  addEvent(element,"click",getPetByNameBridge)
  function getPetByNameBridge(){
    getPetByBame(this.id,function(pet){
      consols.log("request pet"+pet.resopnseText);
    })
  }

总结:这种做法使API和展现层完全分离,API和展现层可以灵活的变动。

(2)特权函数

//特权函数
var privilege=function () {
  //信息全封闭,内部业务逻辑复杂,做成一个特权函数,使调用方便
  var complex=function (x,y) {
    //复杂的数学处理
  }

 this.bridge=function () { //提供公共接口,返回一个单体
   return {
     bridgeAdd:function () {
       //处理前
       complex(1,2);
       //处理后
     }

   }
 }
}

(3)多个类的连接

//多个类的连接
var class1=function (a,b) {
  this.a=a;
  this.b=b;
}
  var class2=function (e) {
    this.e=e;
  }
  //桥梁的连接
  var bridgeClass=function () {
    this.one=new Class1(1,2);
    this.two=new Class1(1);
  }
//目的:两个类能独立的修改,而门面的意义在于调用方便

桥梁模式:

JavaScript设计模式--桥梁模式引入操作实例分析

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

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

Javascript 相关文章推荐
JavaScript 程序编码规范
Nov 23 Javascript
js通过googleAIP翻译PHP系统的语言配置的实现代码
Oct 17 Javascript
jquery解决客户端跨域访问问题
Jan 06 Javascript
Node.js事件循环(Event Loop)和线程池详解
Jan 28 Javascript
JavaScript插件化开发教程(六)
Feb 01 Javascript
JavaScript+html5 canvas绘制缤纷多彩的三角形效果完整实例
Jan 26 Javascript
jQuery获取select选中的option的value值实现方法
Aug 29 Javascript
前端把html表格生成为excel表格的实例
Sep 19 Javascript
微信小程序实现美团菜单
Jun 06 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
Oct 20 Javascript
vue-cli构建vue项目的步骤详解
Jan 27 Javascript
JS实现动态星空背景效果
Nov 01 Javascript
JavaScript设计模式--简单工厂模式实例分析【XHR工厂案例】
May 23 #Javascript
JavaScript设计模式--简单工厂模式定义与应用案例详解
May 23 #Javascript
基于element-ui封装可搜索的懒加载tree组件的实现
May 22 #Javascript
微信小程序点击滚动到指定位置的实现
May 22 #Javascript
使用JavaScript通过前端发送电子邮件
May 22 #Javascript
uni-app微信小程序登录授权的实现
May 22 #Javascript
jQuery 选择器用法实例分析【prev + next】
May 22 #jQuery
You might like
php文本转图片自动换行的方法
2013/03/13 PHP
PHP用身份证号获取星座和生肖的方法
2013/11/07 PHP
phpmyadmin打开很慢的解决方法
2014/04/21 PHP
php获取服务器操作系统相关信息的方法
2016/10/08 PHP
laravel开发环境homestead搭建过程详解
2020/07/03 PHP
js资料prototype 属性
2007/03/13 Javascript
firefox浏览器下javascript 拖动层效果与原理分析代码
2007/12/04 Javascript
Javascript学习笔记-详解in运算符
2011/09/13 Javascript
jquery 如何动态添加、删除class样式方法介绍
2012/11/07 Javascript
Jquery实现点击按钮,连续地向textarea中添加值的实例代码
2014/03/08 Javascript
javascript数组操作方法小结和3个属性详细介绍
2014/07/05 Javascript
jQuery实现隔行背景色变色
2014/11/24 Javascript
JavaScript中实现单体模式分享
2015/01/29 Javascript
js实现一个链接打开两个链接地址的方法
2015/05/12 Javascript
JavaScript中Math.SQRT2属性的使用详解
2015/06/14 Javascript
jQuery实现带动画效果的多级下拉菜单代码
2015/09/08 Javascript
Vuejs入门教程之Vue生命周期,数据,手动挂载,指令,过滤器
2017/04/19 Javascript
js实现图片上传预览原理分析
2017/07/13 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
在vue中使用css modules替代scroped的方法
2018/03/10 Javascript
JavaScript对象拷贝与赋值操作实例分析
2018/12/10 Javascript
jquery实现垂直无限轮播的方法分析
2019/07/16 jQuery
vue移动端的左右滑动事件详解
2020/06/17 Javascript
解决PyCharm同目录下导入模块会报错的问题
2018/10/13 Python
python时间序列按频率生成日期的方法
2019/05/14 Python
使用Python opencv实现视频与图片的相互转换
2019/07/08 Python
Python替换月份为英文缩写的实现方法
2019/07/15 Python
django 中的聚合函数,分组函数,F 查询,Q查询
2019/07/25 Python
Pycharm 2019 破解激活方法图文详解
2019/10/11 Python
Python 面向对象之类class和对象基本用法示例
2020/02/02 Python
django使用F方法更新一个对象多个对象字段的实现
2020/03/28 Python
百思买加拿大:Best Buy Canada
2018/03/20 全球购物
eVitamins日本:在线购买折扣维生素、补品和草药
2019/04/04 全球购物
幼儿园的门卫岗位职责
2014/04/10 职场文书
2016年机关单位节能宣传周活动总结
2016/04/05 职场文书
MySQL创建定时任务
2022/01/22 MySQL