JavaScriptアダプターのモード原理と使用例の詳細


本論文の実例は、JavaScriptアダプターのモード原理と使い方を説明する。皆さんに参考にしてあげます。具体的には以下の通りです。
適合モードは、既存のインターフェースと互換性のないクラスの間で適応するために使用されてもよく、このようなモードを使用するオブジェクトは、他のオブジェクトを新しいインターフェースで包装するための包装器と呼ばれる。
基本理論
アダプタモード:1つのインターフェースをクライアントが必要とするインターフェースに変換し、クライアントコードを変更する必要がなく、互換性のないコードを一緒に動作させることができる。
アダプターには主に3つのキャラクターがあります。
(1)クライアント:インターフェースを呼び出すクラス
(2)アダプター:クライアントインターフェースとサービスを提供するインターフェースとを接続するためのクラス
(3)適合者:サービスを提供するが、クライアントインターフェースの需要と互換性のないサービス類。
ここには2つの数の加算の例があります。
まず一つは、二つの数を足すサービスとクライアントがあります。
(1)まずインターフェース検査クラスを導入する。このインターフェースを実現するクラスがインターフェースで使用される方法を実現したかどうかを確認する。

//(                      
//        Interface.prototype ,              
//                 
//       
var Interface=function (name,methods) {//name:    
  if(arguments.length<2){
    alert("       ")
  }
  this.name=name;
  this.methods=[];//            
  for(var i=0;i<methods.length;i++){
    if(typeof methods[i]!="string"){
      alert("           ");
    }else {
      this.methods.push( methods[i]);
    }
  }
};
Interface.ensureImplement=function (object) {
  if(arguments.length<2){
    throw new Error("       2 ")
    return false;
  }
  for(var i=1;i<arguments.length;i++){
    var inter=arguments[i];
    //         Interface  
    if(inter.constructor!=Interface){
      throw new Error("        ,    Interface  ");
    }
    //              
    //      
    for(var j=0;j<inter.methods.length;j++){
      var method=inter.methods[j];//       

      //object[method]     
      //                      
      if(!object[method]||typeof object[method]!="function" ){//                      
        throw new Error("                  ")
      }
    }
  }
}

(2)インターフェースを使って同じインターフェースを作る

 var InterfaceResult=new Interface("InterfaceResult",["add"]);

(3)服務端の2つの数の加算

function First() {
    this.add=function (x,y) {
     return x+y;
    }
    Interface.ensureImplement(this,InterfaceResult);//    
  }

(4)クライアントがサービスエンドコードを呼び出す

var first=new First();
alert(first.add(1,2)) ;//3

二つ目は、今一つの要求があります。クラスのライブラリを変えなければなりませんが、クライアントのプログラムは大きな変更があることを望んでいません。
(1)同じインターフェースを継承した上で、クラスは

function Second() {
    this.add=function (numberList) {
      //[1,2,3] "1+2+3" eval("1+2+3")
      return eval(numberList.join("+"));
    }
    Interface.ensureImplement(this,InterfaceResult);//                 
  }

この時、私達がこのクラスのライブラリを使う必要があるなら、クライアントはまたこのようにできません。

var second=new Second();
alert(second.add(1,3));//         

クライアントの要求に全く合わないです。クライアントが変わらないことを保証するためには、新しいクラスライブラリを使用することができます。アダプターモードを使用する必要があります。今インターフェースが変化しました。アダプターを使って、クライアントの変化に対応します。
クライアントと新しいインターフェースを両立させる。
(2)アダプター

 function ThirdWarpper() {
       this.add=function (x,y) {
         var arr=new Array();
         arr.push(x);
         arr.push(y);
         return new Second().add(arr);
       }
       Interface.ensureImplement(this,InterfaceResult);
     }

(3)クライアントコード

  //   
  var third=new ThirdWarpper();
   var result= third.add(1,8);//   
   alert(result);
上記のように新しいクラスライブラリを使用した後の図解は次の通りです。
 
まとめる
表面から見ると、アダプターモードは外観モードに似ています。それらは他のオブジェクトを包装して、表示されるインターフェースを変えます。両者の違いは、インターフェースをどう変えるかにある。外観要素は単純なインターフェースであり、追加の選択を提供しない。
また、よくある任務を簡単に達成するために、いくつかの仮説を立てることもあります。アダプターは一つのインターフェースを別のインターフェースに変換します。いくつかの機能をフィルタしたり、インターフェースを簡単にしたりしません。
関心のある友達はオンラインHTML/CSS/JavaScript先端コードを使ってデバッグ実行ツールを実行できます。http://tools.jb51.net/code/WebCodeRunは上記のコードの運行効果をテストします。
さらに、JavaScriptに関する内容については、当駅のテーマを見ることができます。「javascript対象向け入門教程」、「JavaScriptエラーとデバッグテクニックのまとめ」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」、「JavaScriptはアルゴリズムと技術の総括を遍歴します。」、「JavaScript数学演算の使い方のまとめ
本論文で述べたように、JavaScriptプログラムの設計に役に立ちます。