Adapter适配器模式在JavaScript设计模式编程中的运用分析.docVIP

Adapter适配器模式在JavaScript设计模式编程中的运用分析.doc

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Adapter适配器模式在JavaScript设 计模式编程中的运用分析 适配器模式的作用是解决两个软件实体间的接口不兼 容的问题,在JavaScript尤其是AJAX方面比较常用,接下 来看一下对Adapter适配器模式在JavaScript设计模式编 程中的运用分析 定义 适配器模式(Adapter)是将一个类(对象)的接口 (方法或属性)转化成客户希望的另外一个接口(方法或 属性),适配器模式使得原本由于接口不兼容而不能一起工 作的那些类(对象)可以一些工作。速成包装器(wrap per )0 适配器的别名是包装器(wrap per),这是一个相对简 单的模式。在程序开发中有许多这样的场景:当我们试图 调用模块或者对象的某个接口时,却发现这个接口的格式 并不符合目前的需求。这时候有两种解决办法,第一种是 修改原来的接口实现,但如果原来的模块很复杂,或者我 们拿到的模块是一段别人编写的经过压缩的代码,修改原 接口就显得不太现实了。第二种办法是创建一个适配器, 将原接口转换为客户希望的另一个接口,客户只需要和适 配器打交道。 为什么需要采用适配器模式? 在开发应用程序时,您往往会需要更换其中某一部分, 例如,您用于保存日志或类似性质的内容的一个库。当您 用一个新库来替换它时,新库不太可能有完全相同的接口。 从这里开始,您有两种选择: (1)检查所有代码,并更改指向旧库的一切代码 (2)创建一个适配器,使新库可以使用与旧库相同的 接口 显然,在一些情况下,假如您的应用程序很小,或者 对旧库的引用很少,更合适的做法是检查完整的代码,并 更改它以匹配新库,而不是添加一个新的抽象层,使代码 更复杂。但是,在大多数情况下,创建一个适配器更为实 用且节省时间。 JavaS cript代码示例 一件事情有可能发生时,它就一定会发生。首先让我 们来看一下这个小小的LoggerFacto ry,它让我们能更容易 地修改我们使用的日志接口。 varLogger Factory: { nbsp; getLog ger: functio n() { nbsp; nbsp; return window, cons ole; nbsp;}, nbsp;… }; /*用法示例*/ va rlogger=Log gerFactory. getLogger (); logger. 1 og(〃somethi ngtolog〃); 在我们调用getLo gger时它给我们返回了控制台对象 (cons ole)。为了这个练习我们假装console对象只有一个 方法__1 og,并且它只能接收一个字符串类型的参数。接 下来,我们有另一个日志接口,这个会复杂些,因为1)它 是用JavaS cript实现的,不像console那样是浏览器本身 就有的;2)它会把日志通过AJAX发送到服务器,这也意 味着我们要对URL数据进行编码(代码里不会具体实现URL 编码相关的事,因为它和我们的要讲的适配器模式毫不相 干)。当然,它会使用一个和控制台不同的接口。 varA jaxLogger={ nbsp; send Log: functio n () { nbsp;nbsp; vardat a=this. urlE ncode (argum ents); nbs p; nbsp; jQue ry. ajax ({ nbsp; nbsp; n bsp; url: 〃ht tp://exampl e. com/log〃, nbsp;nbsp :nbsp;data:data nbsp;nb sp;}); nbsp;}, nbsp;ur lEncode:fun ction(arg) { nbsp;nbsp;… nbsp;nb sp: returnen codedData; n bsp;}, nbsp;… }; 我们使用了 jQuery的AJA X请求,主要是为了节省时 间,忽略那些和适配器模式不想干的事情。我们现在要做 的事情就是创建一个适配器,并且改变之前的LoggerFac tory让其返回这个适配器而不是控制台对象。 varAjaxLo ggerAdapter ={ nbsp; lo g: function(arg) { nbsp : nbsp; AjaxL ogger. sendL og (arg): nbs p;} }; /*调整 Lo ggerFactory */ varLogger Factory={ nbsp; getLog ger: functio n () { nbsp;nb sp;//改变返回值 nbsp;nbsp;returnAjaxL oggerAdapte r; nbsp;}, nb sp;… }; 我们对现有代码只做了一行更改,整个程序就可以使 用这个新

文档评论(0)

ggkkppp + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档