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 相关文章推荐
js中将字符串转换成json的三种方式
Jan 12 Javascript
如何用ajax来创建一个XMLHttpRequest对象
Dec 10 Javascript
jquery延迟加载外部js实现代码
Jan 11 Javascript
早该知道的7个JavaScript技巧
Mar 27 Javascript
javascript中setTimeout的问题解决方法
May 08 Javascript
JS定义网页表单提交(submit)的方法
Mar 20 Javascript
jQuery实现微信长按识别二维码功能
Aug 26 Javascript
vue-router 前端路由之路由传值的方式详解
Apr 30 Javascript
微信小程序 flexbox layout快速实现基本布局的解决方案
Mar 24 Javascript
vue实现页面切换滑动效果
Jun 29 Javascript
element el-table表格的二次封装实现(附表格高度自适应)
Jan 19 Javascript
vue项目多环境配置(.env)的实现
Jul 21 Vue.js
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
ThinkPHP3.0略缩图不能保存到子目录的解决方法
2012/09/30 PHP
Smarty使用自定义资源的方法
2015/08/08 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
浅析Yii2 GridView实现下拉搜索教程
2016/04/22 PHP
php利用云片网实现短信验证码功能的示例代码
2017/11/18 PHP
PHP中__set()实例用法和基础讲解
2019/07/23 PHP
javascript 面向对象编程基础:继承
2009/08/21 Javascript
jQueryUI的Dialog的简单封装
2010/06/07 Javascript
javascript之typeof、instanceof操作符使用探讨
2013/05/19 Javascript
jquery获取tr并更改tr内容示例代码
2014/02/13 Javascript
简单谈谈javascript中this的隐式绑定
2016/02/22 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
Vue之Watcher源码解析(1)
2017/07/19 Javascript
JavaScript字符串转数字的5种方法及遇到的坑
2018/07/16 Javascript
extract-text-webpack-plugin用法详解
2019/02/14 Javascript
Python中针对函数处理的特殊方法
2014/03/06 Python
Django集成百度富文本编辑器uEditor攻略
2014/07/04 Python
Python实时获取cmd的输出
2015/12/13 Python
详解Python之数据序列化(json、pickle、shelve)
2017/03/30 Python
python通过pip更新所有已安装的包实现方法
2017/05/19 Python
Python实现Logger打印功能的方法详解
2017/09/01 Python
python微信跳一跳系列之色块轮廓定位棋盘
2018/02/26 Python
使用APScheduler3.0.1 实现定时任务的方法
2019/07/22 Python
Python3使用xlrd、xlwt处理Excel方法数据
2020/02/28 Python
解决python调用自己文件函数/执行函数找不到包问题
2020/06/01 Python
Python如何自动获取目标网站最新通知
2020/06/18 Python
Python selenium键盘鼠标事件实现过程详解
2020/07/28 Python
html5 Canvas画图教程(3)—canvas出现1像素线条模糊不清的原因
2013/01/09 HTML / CSS
全球500多个机场的接送服务:Suntransfers
2019/06/03 全球购物
信息管理专业推荐信
2013/10/29 职场文书
女大学生自我鉴定
2013/12/09 职场文书
计划生育个人总结
2015/03/02 职场文书
房屋维修申请报告
2015/05/18 职场文书
如何用PHP实现分布算法之一致性哈希算法
2021/05/26 PHP
MySQL系列之开篇 MySQL关系型数据库基础概念
2021/07/02 MySQL