• 《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函数
    接下来,例子太长了,要看的就看书吧。。。其实这个例子和上面所说的原理是一样的,只不过是一个真实的例子
     
  • 相关阅读:
    关于Android的振动控制器(Vibrator)报SecurityException异常的问题
    Db4o结合Linq、Lambda表达式的简单示例
    递归选取扩展方法(RecursionSelect)的新重载形式
    解决Adobe Illustrator CS5启动后自动关闭的问题
    趋势畅想搭载android系统的智能数码相机
    Android SurfaceView 绘图及帧频处理方法修正
    MVP 模式实例解析
    .Net 自定义应用程序配置
    C# 类型基础
    [译]开闭原则
  • 原文地址:https://www.cnblogs.com/oadaM92/p/4368332.html
Copyright © 2020-2023  润新知