JAvascript設計モード-アダプタモード(8)

5262 ワード

アダプタモードは、既存のインタフェースと互換性のないクラスの間で適切に設定できます.このモードを使用するオブジェクトは、新しいインタフェースで別のオブジェクトをパッケージしているため、パッケージ(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); 
};