前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >JavaScript设计模式--桥梁模式--引入

JavaScript设计模式--桥梁模式--引入

作者头像
wfaceboss
发布2019-04-08 10:55:09
4360
发布2019-04-08 10:55:09
举报
文章被收录于专栏:wfaceboss

1.使用情况

(1)事件的监控

#1,利用页面的button来选择宠物的例子(思路)

代码语言:javascript
复制
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函数

代码语言:javascript
复制
/*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

代码语言:javascript
复制
function getPetByBame(id,callBack){
        sayncRquest("GET",'url?id='+id,function(pet){
            callBack(pet)
        })

#2,桥梁

代码语言:javascript
复制
//定义一个桥梁叫抽象和实现相互联系在一起
    addEvent(element,"click",getPetByNameBridge)
    function getPetByNameBridge(){
        getPetByBame(this.id,function(pet){
            consols.log("request pet"+pet.resopnseText);
        })
    }

总结:这种做法使API和展现层完全分离,API和展现层可以灵活的变动。

(2)特权函数

代码语言:javascript
复制
//特权函数
var  privilege=function () {
    //信息全封闭,内部业务逻辑复杂,做成一个特权函数,使调用方便
    var complex=function (x,y) {
       //复杂的数学处理
    }

 this.bridge=function () {  //提供公共接口,返回一个单体
     return {
         bridgeAdd:function () {
             //处理前
             complex(1,2);
             //处理后
         }

     }
 }
}

(3)多个类的连接

代码语言:javascript
复制
//多个类的连接
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);
    }
//目的:两个类能独立的修改,而门面的意义在于调用方便

桥梁模式:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017-10-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档