首页 > 网站 > WEB开发 > 正文

[设计模式] javascript 之 适配器模式

2024-04-27 14:15:05
字体:
来源:转载
供稿:网友

[设计模式] javascript 之 适配器模式

  [设计模式]Javascript之适配器模式

  说明:适配器模式,一般是为要使用的接口,不符本应用或本系统使用,而需引入的中间适配层类或对象的情况;

  场景:就好比我们买了台手机,买回来后发现,充电线插头是三插头,但家里,只有两插头的口的插座,怎么办?为了方便,也有为能在任何地方都能充上电,就得去买个通用充电适配器;这样手机才能在自己家里充上电;不然只能放着,或跑到有这个插头的地方充电;

  实际开发环境下,由于旧的系统,或第三方应用提供的接口,与我们定义的接口不匹配,在以面向接口编程的环境下,就无法使用这样旧的,或第三方的接口,这时我们就使用适配类继承待适匹配的类,并让适配类实现接口的方式来引入旧的系统或第三方应用的接口;

  这样使用接口编程时,就可以使用这个适匹配类,来间接调用旧的系统或第三方应用的接口。

  在Javascript要实现类似动态面向对象语言的适配器模式的代码,可以使用到PRototype的继承实例来实现;因为是基于接口约束的,但是Javascript没有接口这号东西,我们去掉接口这一层,直接实现接口实现类Target,模拟类似的源码出来;

  源码实例

  1.待适配的类及接口方法:

functionAdaptee(){

this.name='Adaptee';

}

Adaptee.prototype.getName=function(){

returnthis.name;

}

  2.普通实现类[由于Javascript中没有接口,所以就直接提供实现类]

functionTarget(){

this.name='Target';

}

Target.prototype.queryName=function(){

returnthis.name;

}

  3.适配类:

functionAdapte(){

this.name='';

}

Adapte.prototype=newAdaptee();

Adapte.prototype.queryName=function(){

this.getName();

}

  4使用方法:

varlocal=newTarget();

local.queryName();//调用普通实现类

varadapte=newAdapte();

adapte.queryName();//调用旧的系统或第三方应用接口;

  其他说明

  上面第四步,varlocal以及varadapte类似像Java,C#这样的面向对象语言中接口引用指定,如:

复制代码

interfaceTarget{

publicStringqueryName();

}

//接口引用指向

Targetlocal=newRealTarget();//即上面Javascript的Target实现类

local.queryName();

//适配器

Targetadapte=newAdapte();

adapte.queryName();

  可见适配器类是连接接口与目标类接口的中间层;就是用来解决,需要的目标已经存在了,但我们无法直接使用,不能跟我们的代码定义协同使用,就得使用适器模式,适配器模式也叫转换模式,包装模式。


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表