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对象是否拥有某一个属性的js代码
Aug 16 Javascript
table行随鼠标移动变色示例
May 07 Javascript
最短的IE判断var ie=!-[1,]分析
May 28 Javascript
浅谈$('div a') 与$('div>a')的区别
Jul 18 Javascript
js获取腾讯视频ID的方法
Oct 03 Javascript
基于MVC方式实现三级联动(JavaScript)
Jan 23 Javascript
Javascript实现从小到大的数组转换成二叉搜索树
Jun 13 Javascript
AngularJS中下拉框的高级用法示例
Oct 11 Javascript
9种改善AngularJS性能的方法
Nov 28 Javascript
jquery实现聊天机器人
Feb 08 jQuery
vue 实现setInterval 创建和销毁实例
Jul 21 Javascript
VUE : vue-cli中去掉路由中的井号#操作
Sep 04 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
重置版游戏视频
2020/04/09 魔兽争霸
PHP中的MYSQL常用函数(php下操作数据库必备)
2010/09/12 PHP
php数组比较实现查找连续数的方法
2015/07/29 PHP
php获取指定数量随机字符串的方法
2017/02/06 PHP
php获取手机端的号码以及ip地址实例代码
2018/09/12 PHP
javascript onkeydown,onkeyup,onkeypress,onclick,ondblclick
2009/02/04 Javascript
jquery基础教程之deferred对象使用方法
2014/01/22 Javascript
javascript的tab切换原理与效果实现方法
2015/01/10 Javascript
JSONObject使用方法详解
2015/12/17 Javascript
对于Javascript 执行上下文的全面了解
2017/09/05 Javascript
Vue中computed与methods的区别详解
2018/03/24 Javascript
在react中使用vuex的示例代码
2018/07/30 Javascript
解决Vue.js父组件$on无法监听子组件$emit触发事件的问题
2018/09/12 Javascript
微信小程序实现的自定义分享功能示例
2019/02/12 Javascript
JavaScript判断对象和数组的两种方法
2019/05/31 Javascript
让 babel webpack vue 配置文件支持智能提示的方法
2019/06/22 Javascript
JavaScript解析JSON数据示例
2019/07/16 Javascript
jquery检测上传文件大小示例
2020/04/26 jQuery
Vue表单提交点击事件只允许点击一次的实例
2020/10/23 Javascript
[09:34]2018DOTA2国际邀请赛寻真——永不放弃的iG
2018/08/14 DOTA
Python守护进程实现过程详解
2020/02/10 Python
Django实现从数据库中获取到的数据转换为dict
2020/03/27 Python
PyCharm 在Windows的有用快捷键详解
2020/04/07 Python
keras自动编码器实现系列之卷积自动编码器操作
2020/07/03 Python
Python实现石头剪刀布游戏
2021/01/20 Python
Python解析m3u8拼接下载mp4视频文件的示例代码
2021/03/03 Python
一款利用纯css3实现的360度翻转按钮的实例教程
2014/11/05 HTML / CSS
Skyscanner波兰:廉价航班
2017/11/07 全球购物
美国葡萄酒网上商店:Martha Stewart Wine Co.
2019/03/17 全球购物
META-INF文件夹中的MANIFEST.MF的作用
2016/06/21 面试题
技术经理的自我评价范文
2013/12/03 职场文书
美丽家庭事迹材料
2014/05/03 职场文书
校本培训个人总结
2015/02/28 职场文书
2015年暑假生活总结
2015/07/13 职场文书
银行求职信范文
2019/05/13 职场文书
【海涛dota解说】一房久违的影魔魂守二连发
2022/04/01 DOTA