Heim > Web-Frontend > js-Tutorial > Vertiefendes Verständnis der JavaScript-Reihe (28): Detaillierte Erläuterung des Fabrikmusters von Designmustern_Javascript-Fähigkeiten

Vertiefendes Verständnis der JavaScript-Reihe (28): Detaillierte Erläuterung des Fabrikmusters von Designmustern_Javascript-Fähigkeiten

WBOY
Freigeben: 2016-05-16 16:11:13
Original
1018 Leute haben es durchsucht

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:

Code kopieren Der Code lautet wie folgt:

var Car = (function () {
var Car = Funktion (Modell, Jahr, Meilen) {
This.model = model;
This.year = Jahr;
This.miles = Meilen;
};
Rückgabefunktion (Modell, Jahr, Meilen) {
         Neuwagen zurückgeben (Modell, Jahr, Meilen);
};
})();

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:

Code kopieren Der Code lautet wie folgt:

var productManager = {};

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):

Code kopieren Der Code lautet wie folgt:

var page = page ||. {};
page.dom = page.dom ||. {};
//Unterfunktion 1: Text verarbeiten
page.dom.Text = function () {
This.insert = Funktion (wo) {
        var txt = document.createTextNode(this.url);
Where.appendChild(txt);
};
};

//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:

Code kopieren Der Code lautet wie folgt:

page.dom.factory = Funktion (Typ) {
Gibt eine neue Seite zurück.dom[type];
}

Anwendung:
Code kopieren Der Code lautet wie folgt:

var o = page.dom.factory('Link');
o.url = 'http://www.cnblogs.com';
o.insert(document.body);

Zu diesem Zeitpunkt glaube ich, dass jeder ein klares Verständnis für die Einführung in das Werksmodell hat, daher werde ich nicht näher darauf eingehen.

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.

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage