/*
适配器模式
*/
/*简单易懂的适配器模式*/
var fun1 = function(a1, a2, a3) {
alert(a1);
alert(a2);
alert(a3);
}
var fun2 = function(a1, a2) {
alert(a1);
alert(a2);
}
/*我们要使用这个函数我们如次调用*/
fun1(1, 2, 3);
/*但是往往在调用之前会遇到我们只能得到1个对象,这个对象包含这3个参数,这个时候我们就需要使用适配器函数进行过度*/
var data = {
a1: 1,
a2: 1,
a3: 1
}
/* 适配器像不像工厂?像不像门面? */
var Config = function() {
switch (arguments.length) {
case 1:
fun1(arguments[0].a1, arguments[0].a2, arguments[0].a3);
break;
case 2:
fun2(arguments[0].a1, arguments[0].a2);
break;
case 3:
fun1(arguments[0], arguments[1], arguments[2]);
break;
default:
return;
}
}
/*
差别在于,工厂是用于实例化一个对象;
适配器用于和谐多个接口,我们把fun1,和fun2当作2个内部完全不同的接口这就好理解了,虽然在这个例子中2个接口内部基本相同;
适配器与门面的差别:
门面模式里面我们调用fun1这个函数,需要3个参数,当用户只能提供小于3个参数是我们通过门面函数进行缺少参数的补全最后调用依然是fun1;
适配器模式里面我们就有了多个选择当用户提供的参数与fun1的参数个数不同,我们可以考虑fun2;
看了这个差别的描述应该能理解门面与适配器的差别了吧
适配器模式的最大优点在于不同库之间的兼容问题
*/
初学javascript设计模式(五)适配器模式
最新推荐文章于 2024-05-11 09:56:10 发布