适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一些工作。
比如一个简单的学生查询学科成绩的方法:
function selectScore( name, id, course_id ){ // arguments 姓名 学号 课程id ... }
当我需要一个班级某门学科的整体成绩列表,而我手上只有每个学生如下的数据
[ { name: 'lily', studentID: '0911' }, { name: 'suny', studentID: '0912' }, ... ]
我需要查询 英语 其课程ID为 101,那么对于该任务,写一个适配器方式是很恰当不过的
function selectEnglishScore( stutentObj ){ selectScore( stutentObj.name, stutentObj.studentID , 101); }
这是一个最简单的关于适配器来处理参数方面兼容的形式。
另一个例子:
适用场景:
在双方都不太容易修改的时候使用适配器。
其实简单的来说,适配器模式意义上很简单 - 适配,解决兼容问题。主要是为了解决新旧代码之间不想重构而实行的中庸的方式,或者更换一些类库,升级不兼容版本类库的时候的一种“懒惰”方法。对于适配器模式的确会造成一些不同的看法,比如说原本是需要完全重构的代码却使用了几个简单的适配器模式方法就搪塞过去了。随着这些行为的越来越过,使得代码的质量日渐不足,甚至令后来的程序猿感到愤愤不已。
所以对于适配器模式使用的情况我们需要做好多方面的考虑,其实对于所谓的程序设计模式而言均是如此。原本是为了优化而做的工作,可别到头来适得其反。
参考http://blog.chinaunix.net/uid-26672038-id-4251500.html
http://www.cnblogs.com/TomXu/archive/2012/04/11/2435452.html