JavaScript设计模式之适配器模式介绍

 更新时间:2014年12月28日 09:52:35   投稿:junjie  
这篇文章主要介绍了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();

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

相关文章

  • 微信小程序实现时间选择

    微信小程序实现时间选择

    这篇文章主要为大家详细介绍了微信小程序实现时间选择,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-07-07
  • Bootstrap模仿起筷首页效果

    Bootstrap模仿起筷首页效果

    这篇文章主要为大家详细介绍了Bootstrap模仿起筷首页效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • layui将table转化表单显示的方法(即table.render转为表单展示)

    layui将table转化表单显示的方法(即table.render转为表单展示)

    今天小编就为大家分享一篇layui将table转化表单显示的方法(即table.render转为表单展示),具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • JavaScript实现星星等级评价功能

    JavaScript实现星星等级评价功能

    这篇文章主要为大家详细介绍了JavaScript实现星星等级评价功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-03-03
  • 原生JS实现汇率转换功能代码实例

    原生JS实现汇率转换功能代码实例

    这篇文章主要介绍了原生JS实现汇率转换功能代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 深入了解最常用的JavaScript 事件

    深入了解最常用的JavaScript 事件

    这篇文章主要为大家介绍了JavaScript 事件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项

    springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项

    在使用easyUI做前端样式展示时,遇到了文件上传的问题,而且是在弹出层中提交表单,想做到不刷新页面,所以选择了使用ajaxFileUpload插件。下面通过本文给大家分享springMVC + easyui + $.ajaxFileUpload实现文件上传注意事项,需要的朋友参考下吧
    2017-04-04
  • 使用window.print()前端实现网页打印超详细教程(含代码示例)

    使用window.print()前端实现网页打印超详细教程(含代码示例)

    前端实现打印功能的方法有很多,大家在网上随便一搜就是一大堆,下面这篇文章主要给大家介绍了关于使用window.print()前端实现网页打印的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2024-06-06
  • JavaScript页面倒计时功能完整示例

    JavaScript页面倒计时功能完整示例

    这篇文章主要介绍了JavaScript页面倒计时功能,结合完整实例形式分析了javascript计时器、时间运算相关操作技巧,需要的朋友可以参考下
    2019-05-05
  • JavaScript编程的10个实用小技巧

    JavaScript编程的10个实用小技巧

    尽管我使用Javascript来做开发有很多年了,但它常有一些让我很惊讶的小特性。对于我来说,Javascript是需要持续不断的学习的。
    2014-04-04

最新评论