javascript设计模式-适配器模式(8)

适配器模式可用在现有的接口和不兼容的类之间进行适配。使用这种模式的对象又叫做包装器(wrapper),因为他们是在用一个新的接口包装另一个对象。借助适配器可以处理一些类与API不匹配、不能一同使用的情况。适配器是要把一个接口转换为另一个接口,它并不会滤除某些功能,也不会简化接口

// 程序中:简单的适配器


var obj = {                 // 鼠标和键盘(圆口)
    str1:'111' , 
    str2:'222' ,
    str3:'333'
  };

  // 适配器方法
  function adapter(obj){
    interfaceMethod(obj.str1,obj.st2,obj.st3);
  }

  // 新电脑 usb
  function interfaceMethod(x, y , z){
            // 复杂的操作
  };



 // 企业开发中:javascript库(extjs , jquery , yui , prototype ... ded ...)
 // YAHOO 
 // Prototype

 // YAHOO (我们用雅虎的框架,但是Prototype程序员依然可以用自己的风格来使用)

 //模拟:根据id 获得指定的dom元素
 //Prototype $ function  (不需要传递任何的形参:一个id 写一个参数 多个id 多个参数)
 function $(){
        var elements = [] ;
        for(var i = 0 ; i < arguments.length; i++){
        var element = arguments[i];
        if(typeof element == 'string')
            element = document.getElementById(element);
        if(arguments.length ==1)
            return element ;
        elements.push(element);
    }
    return elements;
 }


 // YUI get function (传递了一个参数 :类型不是字符串 就是数组)
 var YAHOO = {};
 YAHOO.get = function(el){
        if(typeof el == 'string'){
            return document.getElementById(el);
        } 
        if(el instanceof Array){
            var elements = [] ;
            for(var i = 0 ; i < el.length ; i++){
                elements[elements.length] = YAHOO.get(el[i]);
            }
        return elements;
    }
    if(el){
        return el ; 
    }
    return null;
 };



 YAHOO.get =  YUIToPrototypeAdapter ;

 function YUIToPrototypeAdapter(){
        //对于YUI开发人员来说 永远传递一个参数
    if(arguments.length == 1){
        var e = arguments[0];
        return  $.apply(window,e instanceof Array?e:[e]);
    } else {
        return $.apply(window ,arguments);
    }
 }



 window.onload = function(){
        /*
    // prototype开发人员习惯的写法
    var domarr = $('inp1','inp2'); 
    alert(domarr);
    */
    /*
    // YUI开发人员习惯的写法
    var domarr = YAHOO.get(['inp1','inp2']);    
    alert(domarr); 
    */


    // YUI  我是一个prototype 用项目经理的说法
    var domarr = YAHOO.get(['inp1']);
    alert(domarr); 
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值