JavaScript設計モードの外観モデル原理と実現方法の分析


本論文の実例はJavaScript設計モードの外観モデル原理と実現方法を述べている。皆さんに参考にしてあげます。具体的には以下の通りです。
外部とサブシステムとの通信は一つのシステムの一つの外観オブジェクトを通して行わなければならない。
外観モードは次の2つのキャラクターを備えています。
1.見栄キャラ
クライアントは、このロール方法を呼び出すことができ、このロールには、サブシステムのアプリケーション(関連する(1つまたは複数の)サブシステムの機能と責任を知る)がある。本役割は、クライアントから送信されたすべての要求を、対応するサブシステムに委任します。
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("                  ")
      }
    }
  }
}

(1)主人類(Person類)

  function Person() {
   this.name="  ";
   this.address="     ";
   this.getInfo=function () {
     return "  "+this.name+"   "+this.address;
   };
   this.learn=function () {
     alert("     ");
   }
    this.marray=function () {
      alert("marray");
    }
   //    
    Interface.ensureImplement(this,PersonDao);//                
  }

(2)ペット犬(Dug類)

var DogDao=new Interface("DogDao",["getInfo","call","run"]);

  var Dog=function () {
    this.name="gg";
 this.getInfo=function () {
   return "     "+this.name;
 };
 this.call=function () { };
 this.run=function () {};
 Interface.ensureImplement(this,DogDao);//    
  }

(3)今は飼い主が自分のペットの犬にペットの引き取り証を作ることができます。   -----クライアントコード
 第一の方法:外観を使わない方式のクライアントのコードは以下の通りです。

function action(person,dog) {
  var r="GG"+new Date().getDay()+Math.floor(Math.random()*11);
  var str="    :  "+r
   +"<br/>    "+person.getInfo()
  +"<br>     :"+dog.getInfo();
  return str;
}document.write(action(new Person(),new Dog()));

第二の方法:間口モードを使って、複雑なことを店頭に任せて、クライアントの圧力を減らすことができます。
  #1:店頭では次のような処理が行われます。

 function facade(person,dog) {
   var r="GG"+new Date().getDay()+Math.floor(Math.random()*11);
   var str="    :  "+r
     +"<br/>    "+person.getInfo()
     +"<br>     :"+dog.getInfo();
   this.action=function () {//        
     return str;
   };
 }

ハ2、クライアントの担当コードは

function action2(person,dog) {
   document.write(new facade(person,dog).action());
}
action2(new Person(),new Dog());
まとめてみると、店頭モードが適用されていないクライアントは、より複雑な業務を処理する必要があり、外観を使用した後、複雑なものを店頭で処理し、クライアントは簡単な呼び出しだけでいいということが分かります。
 外観パターンを簡単に理解するための図構造:

関心のある友達はオンラインHTML/CSS/JavaScript先端コードを使ってデバッグ実行ツールを実行できます。http://tools.jb51.net/code/WebCodeRunは上記のコードの運行効果をテストします。
さらに、JavaScriptに関する内容については、当駅のテーマを見ることができます。「javascript対象向け入門教程」、「JavaScriptエラーとデバッグテクニックのまとめ」、「JavaScriptデータ構造とアルゴリズム技術のまとめ」、「JavaScriptはアルゴリズムと技術の総括を遍歴します。」、「JavaScript数学演算の使い方のまとめ
本論文で述べたように、JavaScriptプログラムの設計に役に立ちます。