js 接口實現代碼


   代碼如下:
 
    /**
      創建接口對象
      * @param name 接口名 
      * @param  methods 接口方法
      */
     var  Interface =  function (name,methods){
         if (arguments.length != 2){
             throw  new  Error( '必須輸入兩個參數,當前個數' +arguments.length);
         }
 
         this .name=name;
         this .methods=[];
         for ( var  i=0, len=methods.length; i<len; i++){
             if ( typeof  methods[i] !==  'string' ){
                 throw  new  Error( '方法名參數必須為string' );
             }
             this .methods.push(methods[i]);
         }
     };
     /**
      * 接口實現
      * @param  object1 實現接口對象
      * @param  object2 對應接口
      * @return 實現錯誤拋出異常
      */
     Interface.ensureImplements =  function (object){
         if (arguments.length < 2){
             throw  new  Error( '必須輸入兩個參數,當前個數'  + arguments.length);
         }
         for ( var  i=1, len=arguments.length; i < len; i++){
             var  interface = arguments[i];
             if (interface.constructor != Interface){
                 throw  new  Error( "請實現接口" );
             }
 
             for  ( var  j = 0, methodsLen = interface.methods.length; j < methodsLen; j++){
                 var  method = interface.methods[j];
                 if (!object[method] ||  typeof  object[method] !==  'function' ){
                     throw  new  Error( "接口名:" +interface.name+ "方法名:" +method+ "沒找到" );
                 }
             };
         }
     }
 
 
     var  DynamicMap =  new  Interface( 'DynamicMap' ,[ 'centerOnPoint' , 'zoom' , 'draw' ]);
 
     /**
      * 執行方法
      * @param  函數方法
      * @return 執行結果
      */
     function  displayRoute(mapInstance){
         Interface.ensureImplements(mapInstance,DynamicMap); //實現接口
 
         /**
          * 調用
          */
         mapInstance.centerOnPoint(12,34);
         mapInstance.zoom(5);
         mapInstance.draw();
     }
     /**
      * 函數方法
      * @type 實現接口方法
      */
     var  a={
         centerOnPoint: function (x,y){
             console.log(x*y);
         },
         zoom: function (x){
             console.log(x);
         },
         draw: function (){
             console.log( "x*y" );
         }
     }
     displayRoute(a);


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM