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 相关文章推荐
Java/JS获取flash高宽的具体方法
Dec 27 Javascript
JS实现局部选择打印和局部不选择打印
Apr 03 Javascript
jQuery基于$.ajax设置移动端click超时处理方法
May 14 Javascript
vue v-on监听事件详解
May 17 Javascript
微信小程序自定义模态对话框实例详解
Aug 16 Javascript
vue中element 上传功能的实现思路
Jul 06 Javascript
springMvc 前端用json的方式向后台传递对象数组方法
Aug 07 Javascript
手把手带你封装一个vue component第三方库
Feb 14 Javascript
Javascript和jquery在selenium的使用过程
Oct 31 jQuery
vue2.0 解决抽取公用js的问题
Jul 31 Javascript
Vue表单提交点击事件只允许点击一次的实例
Oct 23 Javascript
36个正则表达式(开发效率提高80%)
Nov 17 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提取中文首字母
2008/04/09 PHP
PHP 强制性文件下载功能的函数代码(任意文件格式)
2010/05/26 PHP
Javascript Cookie读写删除操作的函数
2010/03/02 Javascript
jQuery.prototype.init选择器构造函数源码思路分析
2013/02/05 Javascript
js定时器怎么写?就是在特定时间执行某段程序
2013/10/11 Javascript
javascript实现通过表格绘制颜色填充矩形的方法
2015/04/21 Javascript
JavaScript中利用构造器函数模拟类的方法
2017/02/16 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
深入浅出webpack教程系列_安装与基本打包用法和命令参数详解
2017/09/10 Javascript
微信小程序购物车、父子组件传值及calc的注意事项总结
2018/11/14 Javascript
javascript实现滚轮轮播图片
2020/12/13 Javascript
vue 通过base64实现图片下载功能
2020/12/19 Vue.js
Python序列化基础知识(json/pickle)
2017/10/19 Python
磁盘垃圾文件清理器python代码实现
2020/08/24 Python
详解将Django部署到Centos7全攻略
2018/09/26 Python
python 实现selenium断言和验证的方法
2019/02/13 Python
Python模块、包(Package)概念与用法分析
2019/05/31 Python
django将网络中的图片,保存成model中的ImageField的实例
2019/08/07 Python
Python3基本输入与输出操作实例分析
2020/02/14 Python
python 实现多维数组(array)排序
2020/02/28 Python
python统计字符串中字母出现次数代码实例
2020/03/02 Python
如何理解python面向对象编程
2020/06/01 Python
Python实现简单的猜单词小游戏
2020/10/28 Python
python模拟点击玩游戏的实例讲解
2020/11/26 Python
python性能测试工具locust的使用
2020/12/28 Python
HTML5中视频音频的使用详解
2017/07/07 HTML / CSS
澳大利亚最大的护发和护肤品购物网站:RY
2019/12/26 全球购物
下面代码从性能上考虑,有什么问题
2015/04/03 面试题
品学兼优的大学生自我评价
2013/09/20 职场文书
学生会主席演讲稿
2014/04/25 职场文书
励志演讲稿大全
2014/08/21 职场文书
学前教育专业求职信
2014/09/02 职场文书
2014年教师节座谈会发言稿
2014/09/10 职场文书
jquery插件实现代码雨特效
2021/04/24 jQuery
Python实战之实现康威生命游戏
2021/04/26 Python
JavaScript中的LHS和RHS分析详情
2022/04/06 Javascript