JavaScript設計モードの工場モードと抽象工場モードの定義と用法分析

2652 ワード

この例では、JavaScript設計モードのファクトリモードと抽象ファクトリモードの定義と使い方について説明します.皆さんの参考にしてください.具体的には以下の通りです.
1、工場モード:Objectコンストラクション関数とオブジェクトの字面量は、単一のオブジェクトを作成するために使用できますが、この方法には明らかな欠点があります.同じインタフェースを使用して多くのオブジェクトを作成すると、多くの重複コードが生成されます.この問題を解決するために、工場モデルの使用を開始します.
ファクトリモードを使用すると、特定のクラスを指定せずにオブジェクトを作成できます.つまり、newキーワードを使用して特定のクラスまたはサブクラスのインスタンスを作成する必要はありません.

var TravelTeam = function(){};
TravelTeam.prototype = {
 register : function(model){
  var person;
  switch(type){
   case "student":
    person = new Student();
    break;
   case "teacher":
    person = new Teacher();
    break;
   default:
    person = new Doctor();
    break;
  }
  return person;
 }
}
var team = new TravelTeam();
team.register(student");


質問:ほとんどの場合、使用に問題はありませんが、拡張性が悪く、新しい隊員タイプを追加する必要がある場合は、switch部分を修正する必要があります.
解決:ファクトリモードで、同じ部分を単独で単純なファクトリオブジェクトに渡します.

var TeamFactory = {
 createTeam:function(type){
  var person;
  switch(type){
   case "student":
    person = new Student();
    break;
   case "teacher":
    person = new Teacher();
    break;
   default:
    person = new Doctor();
    break;
  }
  return person;
 }
}


TeamFactoryはTravelTeamから離れた単体であり、結合度を下げることができ、新しいメンバータイプを追加する必要がある場合は、TeamFactoryファクトリ単体オブジェクトを変更すればよい.

var TravelTeam = function(){};
TravelTeam.prototype = {
 register:function(type){
  var person = TeamFactory.createTeam(type);
  return person;
 }
}


ファクトリモードの問題:複数の類似オブジェクトを作成する問題は解決されましたが、オブジェクト識別の問題(すなわち、オブジェクトのタイプが分からない)は解決されません.
解決:コンストラクタモード、参照://www.jb 51.net/article/144495.htm.
2、抽象工場モデル
工場モデルに基づいてより高いレベルの抽象を行い、共通の用途やテーマに基づいて最上位の基礎工場クラスを抽象化し、他の類似の行為を持つ工場クラスがこの工場クラスに継承されます.
最も典型的な例は、HTML 5とHTML 4フォームドメインの違いを理解した後、最上位レベルのフォームドメインファクトリクラスを抽象化し、HTML 5フォームドメインファクトリクラスとHTML 4フォームドメインファクトリクラスがこのクラスから継承される.
工場モデルと抽象工場モデルの違い:
1コードの残りのすべての部分で複雑なオブジェクト作成方法を遮断することによって特定のオブジェクトの作成プロセスを簡略化する必要がある場合、ファクトリモードを使用するのは適切である.
②既存のコードの複数のクラスから、これらのクラス間で共通の目的または共通のトピックに基づいて、アプリケーションの残りの開発作業の複雑さを低減するために追加の抽象層を作成する必要がある場合は、抽象ファクトリモードを使用するのが適しています.
JavaScriptに関する詳細は、「javascriptオブジェクト向け入門チュートリアル」、「JavaScript切り替え特効とテクニックまとめ」、「JavaScript検索アルゴリズムテクニックまとめ」、「JavaScriptエラーとデバッグテクニックまとめ」、「JavaScriptデータ構造とアルゴリズムテクニックまとめ」、「JavaScript遍歴アルゴリズムとテクニックまとめ」および『JavaScript数学演算用法まとめ』
JavaScriptプログラムの設計に役立つことを願っています.