初学javascript设计模式(五)适配器模式

来源:互联网 发布:苹果7.0下载软件 编辑:程序博客网 时间:2024/05/20 19:30
/*适配器模式*//*简单易懂的适配器模式*/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;看了这个差别的描述应该能理解门面与适配器的差别了吧适配器模式的最大优点在于不同库之间的兼容问题*/