• [设计模式] javascript 之 适配器模式


    适配器模式说明

    说明: 适配器模式,一般是为要使用的接口,不符本应用或本系统使用,而需引入的中间适配层类或对象的情况;

    场景: 就好比我们买了台手机,买回来后发现,充电线插头是三插头,但家里,只有两插头的口的插座,怎么办?为了方便,也有为能在任何地方都能充上电,就得去买个通用充电适配器; 这样手机才能在自己家里充上电;不然只能放着,或跑到有这个插头的地方充电;

    实际开发环境下,由于旧的系统,或第三方应用提供的接口,与我们定义的接口不匹配,在以面向接口编程的环境下,就无法使用这样旧的,或第三方的接口,这时我们就使用适配类继承待适匹配的类,并让适配类实现接口的方式来引入旧的系统或第三方应用的接口;

    这样使用接口编程时,就可以使用这个适匹配类,来间接调用旧的系统或第三方应用的接口。

    在 Javascript 要实现类似动态面向对象语言的适配器模式的代码,可以使用到 prototype 的继承实例来实现;因为是基于接口约束的,但是Javascript没有接口这号东西,我们去掉接口这一层,直接实现接口实现类 Target ,模拟类似的源码出来;

    源码实例

    1. 待适配的类及接口方法:

    function Adaptee() {
        this.name = 'Adaptee';
    }
    Adaptee.prototype.getName = function() {
        return this.name;
    }

    2. 普通实现类 [由于 Javascript 中没有接口,所以就直接提供实现类]

    function Target() {
        this.name = 'Target';
    }
    
    Target.prototype.queryName= function() {
        return this.name;
    }

    3. 适配类:

    function Adapte() {
        this.name = '';
    }
    
    Adapte.prototype = new Adaptee();
    
    Adapte.prototype.queryName = function() {
        this.getName();
    }

    4 使用方法:

    var local = new Target();
    local.queryName(); //调用普通实现类
    
    var adapte = new Adapte();
    adapte.queryName(); //调用旧的系统或第三方应用接口;

    其他说明

    上面第四步,var local 以及 var adapte 类似像 Java,C# 这样的面向对象语言中接口引用指定,如:

    interface Target {
        public String queryName();
    }
    //接口引用指向
    Target local = new RealTarget(); //即上面 Javascript 的 Target 实现类
    local.queryName();
    
    //适配器
    Target adapte = new Adapte();
    adapte.queryName();

    可见适配器类是连接接口与目标类接口的中间层;就是用来解决,需要的目标已经存在了,但我们无法直接使用,不能跟我们的代码定义协同使用,就得使用适器模式,适配器模式也叫转换模式,包装模式;

  • 相关阅读:
    b/s批量下载文件
    b/s批量下载图片
    python函数总结(转载的 有空看下)
    使用命令行执行需要传参的 py文件的方法
    Jmeter3.1官方自带的HTML图形测试报告 + 汉化 (Jmeter 3.1~5.0通用)(有空试一下)
    Jmeter 获取响应时间图形、TPS的三个插件(有空试一下)
    把表里面的字段连起来 输出到一个字段里面的方法 concat()
    testng要了解的
    包的相互调用的方法
    包目录展示方法设置,和 包里面建包的方法
  • 原文地址:https://www.cnblogs.com/editor/p/4172915.html
Copyright © 2020-2023  润新知