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树形控件脚本代码
Jul 24 Javascript
jquery.blockUI.js上传滚动等待效果实现思路及代码
Mar 18 Javascript
Javascript实现动态菜单添加的实例代码
Jul 05 Javascript
node.js中的fs.mkdirSync方法使用说明
Dec 17 Javascript
对jquery的ajax进行二次封装以及ajax缓存代理组件:AjaxCache详解
Apr 11 Javascript
浅谈js之字面量、对象字面量的访问、关键字in的用法
Nov 20 Javascript
JS中判断null的方法分析
Nov 21 Javascript
jquery.param()实现数组或对象的序列化方法
Oct 08 jQuery
js中console在一行内打印字符串和对象的方法
Sep 10 Javascript
vue2路由方式--嵌套路由实现方法分析
Mar 06 Javascript
IDEA配置jQuery, $符号不再显示黄色波浪线的问题
Oct 09 jQuery
Antd的Table组件嵌套Table以及选择框联动操作
Oct 24 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
JSON在PHP中的应用介绍
2012/09/08 PHP
PHP 安全检测代码片段(分享)
2013/07/05 PHP
Yii2.0预定义的别名功能小结
2016/07/04 PHP
php处理多图上传压缩代码功能
2018/06/13 PHP
laravel 输出最后执行sql 附:whereIn的使用方法
2019/10/10 PHP
ExtJS下grid的一些属性说明
2009/12/13 Javascript
jquery 经典动画菜单效果代码
2010/01/26 Javascript
jQuery.extend()的实现方式详解及实例
2013/06/29 Javascript
jQuery Migrate 1.1.0 Released 注意事项
2014/06/14 Javascript
jQuery 获取多选框的值及多选框中文的函数
2016/05/16 Javascript
jQuery webuploader分片上传大文件
2016/11/07 Javascript
JavaScript Uploadify文件上传实例
2017/02/28 Javascript
AngularJS使用拦截器实现的loading功能完整实例
2017/05/17 Javascript
浅谈Vuex的状态管理(全家桶)
2017/11/04 Javascript
vue 组件 全局注册和局部注册的实现
2018/02/28 Javascript
微信小程序--特定区域滚动到顶部时固定的方法
2019/04/28 Javascript
Vue过滤器,生命周期函数和vue-resource简单介绍
2021/01/12 Vue.js
django.db.utils.ProgrammingError: (1146, u“Table‘’ doesn’t exist”)问题的解决
2018/07/13 Python
Python爬虫之正则表达式的使用教程详解
2018/10/25 Python
python 画出使用分类器得到的决策边界
2019/08/21 Python
Django项目中使用JWT的实现代码
2019/11/04 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
python安装后的目录在哪里
2020/06/21 Python
Python importlib模块重载使用方法详解
2020/10/13 Python
Python3爬虫RedisDump的安装步骤
2021/02/20 Python
利用Python实现最小二乘法与梯度下降算法
2021/02/21 Python
移动端HTML5实现文件上传功能【附代码】
2016/03/25 HTML / CSS
全球知名巧克力品牌:Godiva
2016/07/22 全球购物
瑞典时尚服装购物网站:Miinto.se
2017/10/30 全球购物
实习单位接收函模板
2014/01/10 职场文书
小学领导班子对照材料
2014/08/23 职场文书
中国梦演讲稿范文
2014/08/28 职场文书
县政协领导班子群众路线教育实践活动四风问题整改方案
2014/10/26 职场文书
大学生军训感言
2015/08/01 职场文书
合理缓解职场压力,让你随时保持最佳状态!
2019/06/21 职场文书
OpenCV-Python实现轮廓拟合
2021/06/08 Python