js 设计模式 第十一章 Adapter Pattern
来源:互联网 发布:淘宝朋友代付退款到哪 编辑:程序博客网 时间:2024/06/04 20:15
why?
如果页面使用的是YUI前端框架,但是想转换到JQuery 框架上,怎么办?将用到YUI接口的地方都换成JQuery 吗?可以,当工作量大,还不能保证不会漏掉。用Adapter Pattern 吧,实现轻松切换
如果接口不完全适应当前应用,怎么办?重新写个函数?可以,但是含有重复劳动,浪费!用Adapter Pattern ,写个函数,再封装下原来的函数
how?
1 对原有的接口,进行需求再造
原有接口
function interfaceMethod(str1, str2, str3) {...}
但是,我们的对象是:
var clientObject = { string1: 'foo', string2: 'bar', string3: 'baz'};
function clientToInterfaceAdapter(o) { interfaceMethod(o.string1, o.string2, o.string3);}
clientToInterfaceAdapter(clientObject);
2 类库切换
页面上采用prototype 库
// Prototype $ function.function $() { var elements = new Array(); for(var i = 0; i < arguments.length; i++) { var element = arguments[i]; if(typeof element == 'string') element = document.getElementById(element); if(arguments.length == 1) return element; elements.push(element); } return elements;}
/* YUI get method. */YAHOO.util.Dom.get = function(el) { if(YAHOO.lang.isString(el)) { return document.getElementById(el); } if(YAHOO.lang.isArray(el)) { var c = []; for(var i = 0, len = el.length; i < len; ++i) { c[c.length] = Y.Dom.get(el[i]); } return c; } if(el) { return el; } return null;};
function PrototypeToYUIAdapter() { return YAHOO.util.Dom.get(arguments);}function YUIToPrototypeAdapter(el) { return $.apply(window, el);}有了适配器后,通过下面简单一句,就可以实现类库切换,其他位置不用修改
$ = PrototypeToYUIAdapter;
- js 设计模式 第十一章 Adapter Pattern
- Python - 设计模式 - Adapter Pattern
- 设计模式学习-Adapter Pattern
- 适配器设计模式(Adapter Pattern)
- 设计模式 - Adapter Pattern(适配器模式)
- 设计模式 - Adapter Pattern(适配器模式)
- 设计模式-适配器模式(Adapter Pattern)
- 设计模式-适配器模式(Adapter Pattern)
- 设计模式之适配器模式(Adapter Pattern)
- c++设计模式:适配器模式(Adapter Pattern)
- 设计模式 - 适配器模式(adapter pattern) 详解
- 设计模式-适配器模式(adapter pattern)
- 设计模式-适配器模式(Adapter Pattern)
- 设计模式--适配器模式【 Adapter Pattern】
- 设计模式之适配器模式--- Pattern Adapter
- Java设计模式--适配器模式【Adapter Pattern】
- 设计模式【适配器模式Adapter Pattern】
- 设计模式--适配器模式(Adapter Pattern)
- C++中变量的作用域与生命周期
- js 获取当前时间 况且还是动态获取的,也就相当于时间表的 看看呗
- JavaScript对象集合
- js中 visibility和display的区别
- firefox扩展插件制作方法
- js 设计模式 第十一章 Adapter Pattern
- Symantec Backup Exec配置Tape Library Simulator虚拟磁带库
- Android相关属性的介绍:android:exported
- 用Java连接SQL Server2000数据库
- <二>一切都是对象
- 爱真的会让人伤痕累累?令人伤感的日志
- C#按位与、按位或 ---- 组合应用: 权限组合和校验
- D-LINK DI-504路由器TELNET方法及命令运行查看方式
- js:微薄分享