Einführung
Ähnlich wie das Erstellungsmuster erstellt das Fabrikmuster Objekte (die in der Fabrik als Produkte betrachtet werden), ohne die spezifische Klasse des zu erstellenden Objekts anzugeben.
Das Factory-Muster definiert eine Schnittstelle zum Erstellen von Objekten. Diese Schnittstelle bestimmt, welche Klasse von der Unterklasse instanziiert werden soll. Dieses Muster verschiebt die Instanziierung einer Klasse auf Unterklassen. Unterklassen können Schnittstellenmethoden überschreiben, um beim Erstellen ihre eigenen Objekttypen anzugeben.
Dieser Modus ist sehr nützlich, insbesondere wenn dem Prozess der Objekterstellung Werte zugewiesen werden, z. B. wenn auf viele Einstellungsdateien zurückgegriffen wird. Darüber hinaus werden Sie in Programmen häufig Factory-Methoden sehen, mit denen Unterklassen die zu erstellenden Objekttypen definieren können.
Text
Das folgende Beispiel ist eine verbesserte Version des Konstruktormustercodes in Kapitel 26, der die Factory-Methode anwendet:
var tom = neues Auto("Tom", 2009, 20000);
var dudu = neues Auto("Dudu", 2010, 5000);
Wenn es schwer zu verstehen ist, geben wir Ihnen ein anderes Beispiel:
productManager.createProductA = function () {
console.log('ProductA');
}
productManager.createProductB = function () {
console.log('ProductB');
}
productManager.factory = Funktion (typeType) {
Geben Sie den neuen ProductManager[typeType];
zurück
}
productManager.factory("createProductA");
Wenn Sie es immer noch nicht verstehen, gehen wir näher darauf ein. Angenommen, wir möchten einige Elemente in die Webseite einfügen, und die Art dieser Elemente ist nicht festgelegt. Es kann sich um Bilder, Links oder sogar Text handeln. Gemäß Um das Factory-Muster zu definieren, müssen wir die Factory-Klasse und die entsprechende Unterklasse definieren. Definieren wir zunächst die spezifische Implementierung der Unterklasse (dh der Unterfunktion):
//Unterfunktion 2: Links verarbeiten
page.dom.Link = function () {
This.insert = Funktion (wo) {
var link = document.createElement('a');
link.href = this.url;
link.appendChild(document.createTextNode(this.url));
Where.appendChild(link);
};
};
//Unterfunktion 3: Bilder verarbeiten
page.dom.Image = function () {
This.insert = Funktion (wo) {
var im = document.createElement('img');
im.src = this.url;
Where.appendChild(im);
};
};
Wie definieren wir also die Fabrikverarbeitungsfunktion? Eigentlich ist es ganz einfach:
Zusammenfassung
Wann sollte das Fabrikmuster verwendet werden?
Der Werksmodus ist in den folgenden Szenarien besonders nützlich:
1. Die Konstruktion von Objekten ist sehr kompliziert
2. Abhängig von der spezifischen Umgebung müssen unterschiedliche Instanzen erstellt werden
3. Verarbeiten Sie eine große Anzahl kleiner Objekte mit den gleichen Eigenschaften
Wann Sie den Werksmodus nicht verwenden sollten
Missbrauchen Sie das Factory-Muster nicht. Manchmal erhöht es den Code nur unnötig und erschwert die Ausführung des Tests.