はじめに
作成パターンと同様に、ファクトリ パターンは、作成されるオブジェクトの特定のクラスを指定せずにオブジェクト (工場内の製品と見なされます) を作成します。
ファクトリ パターンは、オブジェクトを作成するためのインターフェイスを定義します。このインターフェイスは、サブクラスによってインスタンス化されるクラスを決定します。このパターンでは、クラスのインスタンス化をサブクラスに延期します。サブクラスは、インターフェイス メソッドをオーバーライドして、作成時に独自のオブジェクト タイプを指定できます。
このモードは、特に多くの設定ファイルに依存するなど、オブジェクトの作成プロセスに値を割り当てる場合に非常に便利です。さらに、プログラムではファクトリ メソッドがよく見られます。ファクトリ メソッドは、作成する必要があるオブジェクトのタイプをサブクラスに定義させるために使用されます。
テキスト
次の例は、ファクトリ メソッドを適用する第 26 章のコンストラクター パターン コードの改良版です。
var tom = new Car("Tom", 2009, 20000);
var dudu = new Car("Dudu", 2010, 5000);
理解するのが難しい場合は、別の例を挙げてみましょう:
productManager.createProductA = function () {
console.log('製品A');
}
productManager.createProductB = function () {
console.log('ProductB');
}
productManager.factory = function (typeType) {
新しい productManager[typeType];
を返します
}
productManager.factory("createProductA");
まだ理解できない場合は、Web ページにいくつかの要素を挿入するとします。これらの要素のタイプは、画像、リンク、またはテキストである可能性があります。 「ファクトリ パターンを定義するには、ファクトリ クラスと対応するサブクラスを定義する必要があります。」によると、まずサブクラス (つまり、サブ関数) の特定の実装を定義します。
page.dom.Link = function () {
This.insert = 関数 (どこ) {
var link = document.createElement('a');
link.href = this.url;
link.appendChild(document.createTextNode(this.url));
Where.appendChild(link);
};
};
page.dom.Image = function () {
This.insert = 関数 (どこ) {
var im = document.createElement('img');
im.src = this.url;
Where.appendChild(im);
};
};
概要
ファクトリーパターンを使用する場合
ファクトリー モードは、次のシナリオで特に役立ちます:
1. オブジェクトの構築は非常に複雑です
2. 特定の環境に応じて異なるインスタンスを作成する必要があります
3. 同じプロパティを持つ多数の小さなオブジェクトを処理します
ファクトリーモードを使用しない場合
ファクトリー パターンを乱用しないでください。場合によっては、コードに不必要な複雑さが追加され、テストの実行が困難になることがあります。