深入理解JavaScript系列(39):设计模式之适配器模式详解
介绍
适配器模式(Adapter)是将一个类(对象)的接口(方法或属性)转化成客户希望的另外一个接口(方法或属性),适配器模式使得原本由于接口不兼容而不能一起工作的那些类(对象)可以一些工作。速成包装器(wrapper)。
正文
我们来举一个例子,鸭子(Dock)有飞(fly)和嘎嘎叫(quack)的行为,而火鸡虽然也有飞(fly)的行为,但是其叫声是咯咯的(gobble)。如果你非要火鸡也要实现嘎嘎叫(quack)这个动作,那我们可以复用鸭子的quack方法,但是具体的叫还应该是咯咯的,此时,我们就可以创建一个火鸡的适配器,以便让火鸡也支持quack方法,其内部还是要调用gobble。
OK,我们开始一步一步实现,首先要先定义鸭子和火鸡的抽象行为,也就是各自的方法函数:
//鸭子 varDuck=function(){
}; Duck.prototype.fly=function(){ thrownewError("该方法必须被重写!"); }; Duck.prototype.quack=function(){ thrownewError("该方法必须被重写!"); }
//火鸡 varTurkey=function(){
}; Turkey.prototype.fly=function(){ thrownewError("该方法必须被重写!"); }; Turkey.prototype.gobble=function(){ thrownewError("该方法必须被重写!"); };