Adapter适配器模式在JavaScript设计模式编程中的运用总结(图文教程)

适配器模式的作用是解决两个软件实体间的接口不兼容的问题,在javascript尤其是ajax方面比较常用,接下来看一下对adapter适配器模式在javascript设计模式编程中的运用分析

定义
适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一些工作。速成包装器(wrapper)。

适配器的别名是包装器(wrapper),这是一个相对简单的模式。在程序开发中有许多这样的场景:当我们试图调用模块或者对象的某个接口时,却发现这个接口的格式并不符合目前的需求。这时候有两种解决办法,第一种是修改原来的接口实现,但如果原来的模块很复杂,或者我们拿到的模块是一段别人编写的经过压缩的代码,修改原接口就显得不太现实了。第二种办法是创建一个适配器,将原接口转换为客户希望的另一个接口,客户只需要和适配器打交道。

为什么需要采用适配器模式?
在开发应用程序时,您往往会需要更换其中某一部分,例如,您用于保存日志或类似性质的内容的一个库。 当您用一个新库来替换它时,新库不太可能有完全相同的接口。 从这里开始,您有两种选择:
(1)检查所有代码,并更改指向旧库的一切代码。
(2)创建一个适配器,使新库可以使用与旧库相同的接口。
显然,在一些情况下,假如您的应用程序很小,或者对旧库的引用很少,更合适的做法是检查完整的代码,并更改它以匹配新库,而不是添加一个新的抽象层,使代码更复杂。 但是,在大多数情况下,创建一个适配器更为实用且节省时间。

JavaScript代码示例

立即学习“Java免费学习笔记(深入)”;

一件事情有可能发生时,它就一定会发生。首先让我们来看一下这个小小的LoggerFactory,它让我们能更容易地修改我们使用的日志接口。

var LoggerFactory = {  getLogger: function() {    return window.console;  },  ...};/* 用法示例 */var logger = LoggerFactory.getLogger();logger.log("something to log");

登录后复制

在我们调用getLogger时它给我们返回了控制台对象(console)。为了这个练习我们假装console对象只有一个方法——log,并且它只能接收一个字符串类型的参数。 接下来,我们有另一个日志接口,这个会复杂些,因为1)它是用JavaScript实现的,不像console那样是浏览器本身就有的;2)它会把日志通过AJAX发送到服务器,这也意味着我们要对URL数据进行编码(代码里不会具体实现URL编码相关的事,因为它和我们的要讲的适配器模式毫不相干)。当然,它会使用一个和控制台不同的接口。

var AjaxLogger = {  sendLog: function() {    var data = this.urlEncode(arguments);    jQuery.ajax({      url: "http://example.com/log",      data: data    });  },  urlEncode: function(arg) {    ...    return encodedData;  },  ...};

登录后复制

我们使用了jQuery的AJAX请求,主要是为了节省时间,忽略那些和适配器模式不想干的事情。 我们现在要做的事情就是创建一个适配器,并且改变之前的LoggerFactory让其返回这个适配器而不是控制台对象。

var AjaxLoggerAdapter = {  log: function(arg) {    AjaxLogger.sendLog(arg);  }};/* 调整 LoggerFactory */var LoggerFactory = {  getLogger: function() {    // 改变返回值    return AjaxLoggerAdapter;  },  ...};

登录后复制

我们对现有代码只做了一行更改,整个程序就可以使用这个新的日志接口了。

复杂适配器

日志接口是个很简单的例子,它只有一个方法,把它直接映射到旧的方法上也没什么难的。大多数情况下并不是如此。你可能会碰到这样的问题,即这些互相映射的函数的参数是完全不同的,旧接口可能根本没有这些参数,你必须自己处理它们。某些情况下,你又必须删掉一些参数,因为新的接口根本用不上它们。如果两个对象之间的接口映射太难,我们就要想想别的办法了,反正我不希望查找和修改数千行旧代码。

上面是我整理给大家的,希望今后会对大家有帮助。

相关文章:

JavaScript typeof, null, 和 undefined的相关知识

JavaScript Boolean(布尔) 对象的相关知识与用法

JavaScript Date(日期) 相关知识与用法

以上就是Adapter适配器模式在JavaScript设计模式编程中的运用总结(图文教程)的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2760438.html

(0)
上一篇 2025年3月8日 09:16:44
下一篇 2025年3月5日 02:58:31

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论