• 《javascript设计模式》笔记之第八章:桥接模式


    个人理解:桥接模式就是更进一步地封装已有api,通过这个封装连接你的输入和底层api(初步理解,以后加深理解有不同体会之后可能要修改)

    一:示例:事件监听器
    下面这个示例就演示了通过一座桥(也就是一个API函数)来连接你的输入和原生的ajax
    function getBeerById(id, callback) {
      // Make request for beer by ID, then return the beer data.
      asyncRequest('GET', 'beer.uri?id=' + id, function(resp) {
        // callback response
        callback(resp.responseText);
      });
    }
    
    然后我们之后的编程就可以使用getBeerById这个函数了
    如果我们不适用桥接模式的话,代码是下面这个样子的:
    addEvent(element, 'click', getBeerById);
    function getBeerById(e) {
      var id = this.id;
      asyncRequest('GET', 'beer.uri?id=' + id, function(resp) {
        // Callback response.
        console.log('Requested Beer: ' + resp.responseText);
      });
    }
    
    因此我们可以看出,使用桥接模式的话,getBeerById并没有和事件对象捆绑在一起了!此外,这样的模式还更方便测试,并且降低了代码的耦合性。
    二:用桥接模式连接多个类
    其实这个原理和上面的一样的,都是把其他类封装起来,通过一个函数(桥)来连接它们
    代码:
    var Class1 = function(a, b, c) {
      this.a = a;
      this.b = b;
      this.c = c;
    }
    var Class2 = function(d) {
      this.d = d;
    };
    
    var BridgeClass = function(a, b, c, d) {
      this.one = new Class1(a, b, c);
      this.two = new Class2(d);
    };
    
    我个人认为这样子的话和工厂模式是很相似的
    三:示例:构建XHR连接队列
    在演示之前,说一下一些要用到的函数,例如asyncRequest是用来解决浏览器的差异的,并且假设我们之前就定义了上面说过的Function.prototype.method方法,然后我们默认使用的是比较高级的浏览器,因此可以使用Array.prototype.forEach和Array.prototype.filter函数
    接下来,例子太长了,要看的就看书吧。。。其实这个例子和上面所说的原理是一样的,只不过是一个真实的例子
     
  • 相关阅读:
    notepad++ remove duplicate line
    notepad++ $ ^
    中文名: 交通事故责任认定, 英文名称: Traffic accident responsibility identification
    java 反射 获取Class对象的三种方式
    [转]java中byte转换int时为何与0xff进行与运算
    java中byte取值范围为什么是 -128到127
    bytes2HexString
    DBCS 从256开始
    android开发之使用拼音搜索汉字
    电脑故障,路由器及网络
  • 原文地址:https://www.cnblogs.com/oadaM92/p/4368332.html
Copyright © 2020-2023  润新知