ホームページ > ウェブフロントエンド > jsチュートリアル > JavaScriptデザインパターンのファクトリパターンの定義・分類・使用例を詳しく解説

JavaScriptデザインパターンのファクトリパターンの定義・分類・使用例を詳しく解説

伊谢尔伦
リリース: 2017-07-24 13:57:11
オリジナル
1929 人が閲覧しました

コンセプト: ファクトリーパターンの定義: オブジェクトを作成するためのインターフェースを提供します。これは、リーダー (呼び出し元) の指示 (パラメーター) に従って、対応する製品 (オブジェクト) を生成することを意味します。

オブジェクトの作成には複雑なプロセスが必要になることが多いため、複雑なオブジェクトには適していません。

オブジェクトを作成すると、多くのコードが重複する可能性があり、十分なレベルの抽象化が提供されない可能性があります。

ファクトリは、メンバー オブジェクトの作成を外部オブジェクトに転送します。利点は、オブジェクト間の結合 (つまり、相互影響) を排除することです。

単純なファクトリ パターン

: を使用します。インスタンスを生成するためのクラス (通常はシングルトン)。 複雑なファクトリ パターン

定義は次のとおりです: メンバー オブジェクトのインスタンス化をサブクラスにプッシュします。サブクラスは、親クラスのインターフェイス メソッドをオーバーライドして、作成時に独自のオブジェクト タイプを指定できます。 親クラスは作成プロセス中に一般的な問題のみを処理します。サブクラスは互いに独立しています

コードの実装:simpleシンプルなファクトリパターン:

rreeeecomplexファクトリーパターン==サブクラスを派生するためにのみ使用でき、最終的にサブクラスを拡張することでファクトリ メソッドを実装します

var XMLHttpFactory =function(){};      //这是一个简单工厂模式
  XMLHttpFactory.createXMLHttp =function(){
    var XMLHttp = null;
    if (window.XMLHttpRequest){
      XMLHttp = new XMLHttpRequest()
    }else if (window.ActiveXObject){
      XMLHttp = new ActiveXObject("Microsoft.XMLHTTP")
    }
  return XMLHttp;
  }
  //XMLHttpFactory.createXMLHttp()这个方法根据当前环境的具体情况返回一个XHR对象。
  var AjaxHander =function(){
    var XMLHttp = XMLHttpFactory.createXMLHttp();
    ...
  }
ログイン後にコピー

アプリケーション シナリオ:

ファクトリ パターンは、次のシナリオで特に役立ちます:


(1) オブジェクト構築は非常に複雑です

(2) 異なるインスタンスを作成するには、特定の環境に依存する必要があります (3) 同じプロパティを持つ多数の小さなオブジェクトを処理します

利点:

を実装できる特定のビジネス ロジックを実装する必要がある場合は、親クラスのメソッドをサブクラスでオーバーライドして独自のビジネス ロジックを実装できます。たとえば、ポイントは 2 つあります: 1. コードの重複を防ぐために、オブジェクト間の結合を弱めます。メソッド内でクラスをインスタンス化すると、コードの繰り返しが不要になります。

2. 親クラスで繰り返しコードを書くことができ、サブクラスは親クラスのすべてのメンバープロパティとメソッドを継承し、サブクラスは独自のビジネスロジックの実装のみに重点を置きます。

欠点:

ファクトリーが一定のレベルまで増加すると、コードの複雑さが増し、可読性が低下します。そして、それは物体認識の問題、つまり物体の種類を知る方法を解決するものではありません。

以上がJavaScriptデザインパターンのファクトリパターンの定義・分類・使用例を詳しく解説の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート