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 相关文章推荐
extJs 常用到的增,删,改,查操作代码
Dec 28 Javascript
JavaScript创建对象的写法
Aug 29 Javascript
JavaScript中prototype为对象添加属性的误区介绍
Oct 15 Javascript
Javascript中的Callback方法浅析
Mar 15 Javascript
JS实现弹性漂浮效果的广告代码
Sep 02 Javascript
javascript判断网页是关闭还是刷新
Sep 12 Javascript
js实现延时加载Flash的方法
Nov 26 Javascript
bootstrap模态框消失问题的解决方法
Dec 02 Javascript
Angular实现表单验证功能
Nov 13 Javascript
简单了解node npm cnpm的具体使用方法
Feb 27 Javascript
详解vue 图片上传功能
Apr 30 Javascript
如何通过shell脚本自动生成vue文件详解
Sep 10 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
Ajax+PHP快速上手及简单应用说明
2013/07/24 PHP
php启用sphinx全文搜索的实现方法
2014/12/24 PHP
PHP+apc+ajax实现的ajax_upload上传进度条代码
2016/01/25 PHP
PHP编程入门的基本语法知识点总结
2016/01/26 PHP
PHP观察者模式定义与用法实例分析
2019/03/22 PHP
图片自动缩小 点击放大
2008/07/07 Javascript
用js遍历 table的脚本
2008/07/23 Javascript
JQUERY获取form表单值的代码
2010/07/17 Javascript
jQuery LigerUI 使用教程表格篇(1)
2012/01/18 Javascript
不同的jQuery API来处理不同的浏览器事件
2012/12/09 Javascript
基于javascript实现窗口抖动效果
2016/01/03 Javascript
浅析Nodejs npm常用命令
2016/06/14 NodeJs
JavaScript 随机验证码的生成实例代码
2016/09/22 Javascript
jQuery的ready方法实现原理分析
2016/10/26 Javascript
node+express制作爬虫教程
2016/11/11 Javascript
Javascript中数组去重与拍平的方法示例
2017/02/03 Javascript
JavaScript数组排序reverse()和sort()方法详解
2017/12/24 Javascript
Angular动画实现的2种方式以及添加购物车动画实例代码
2018/08/09 Javascript
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
2018/08/17 Javascript
JS二级菜单不同实现方法分析【4种方法】
2018/12/21 Javascript
javascript中undefined的本质解析
2019/07/31 Javascript
Net微信网页开发 使用微信JS-SDK获取当前地理位置过程详解
2019/08/26 Javascript
微信小程序实现自定义动画弹框/提示框的方法实例
2020/11/06 Javascript
[57:16]2014 DOTA2华西杯精英邀请赛 5 25 LGD VS VG第二场
2014/05/26 DOTA
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
[33:23]VG vs Pain 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
简单介绍Python中的round()方法
2015/05/15 Python
最近Python有点火? 给你7个学习它的理由!
2017/06/26 Python
Python实现的堆排序算法原理与用法实例分析
2017/11/22 Python
pycharm 实现复制一行的快捷键
2021/01/15 Python
纯css3实现图片翻牌特效
2015/03/10 HTML / CSS
大学军训感言200字
2014/02/26 职场文书
2014基层党员干部学习全国两会心得体会
2014/03/17 职场文书
爱国主义教育主题班会
2015/08/13 职场文书
运动会广播稿300字
2015/08/19 职场文书
Win11 Beta 预览版 22621.575 和 22622.575更新补丁KB5016694发布(附更新内容大全)
2022/08/14 数码科技