Heim >Web-Frontend >js-Tutorial >Einführung in das Factory-Methodenmuster von JavaScript-Entwurfsmustern
In diesem Artikel wird hauptsächlich die Einführung des Factory-Methodenmusters in JavaScript-Entwurfsmustern vorgestellt. In diesem Artikel werden einfache Factory-Muster, mehrere Factory-Methodenmuster usw. erläutert. Freunde in Not können sich darauf beziehen
1. Einfaches Factory-Muster
Erläuterung: Es soll eine Factory-Klasse erstellt werden, die die Erstellung von Implementierungsklassen für dieselbe Schnittstelle implementiert.
Aber es scheint, dass JavaScript so etwas wie eine Schnittstelle nicht hat, daher sollten wir die Schnittstellenschicht natürlich entfernen, die Mitgliedsvariablen und Methoden unter unserer Implementierungsklasse sollten dieselben sein; >Zum Beispiel: Hier sind Beispiele für den SMS-Versand und den E-Mail-Versand der Klasse
2 🎜>3. Erstellen Sie eine Factory-Klasse:
function MailSender() { this.to = ''; this.title = ''; this.content = ''; } MailSender.prototype.send = function() { //send body }
4. Verwenden Sie diese Factory-Klasse:
function SmsSender() { this.to = ''; this.title = ''; this.content = ''; } SmsSender.prototype.send = function() { //send body }2 🎜>
function SendFactory() { this.sender = null; } SendFactory.prototype.produce = function(type) { var me = this; if (type == 'mail') { me.sender = new MailSender(); } else if (type == 'sms') { me.sender = new SmsSender(); } return me.sender; }Erklärung: Mehrere Factory-Modus-Methoden stellen eine Verbesserung gegenüber gewöhnlichen Factory-Methoden dar, da die Rückgabeimplementierung auf den übergebenen Zeichen basiert. Wenn die Zeichen falsch eingegeben werden, werden sie möglicherweise nicht oder nicht verarbeitet der falsche Weg; und mehrere Factory-Mustermethoden können solche Fehler vermeiden; Wir verbessern die obige Factory-Klasse:
var factory = new SendFactory(); var sender = factory.produce('mail'); //sms sender.to = 'toName#mail.com'; sender.title = '邮件测试标题!'; sender.content = '发送内容'; sender.send();
Verwendungsmethode:
3. Statisches Factory-Methodenmusterfunction SendFactory() { this.sender = null; } SendFactory.prototype.produceMail = function() { var me = this; me.sender = new MailSender(); return me.sender; } SendFactory.prototype.produceSms = function() { var me = this; me.sender = new SmsSender(); return me.sender; }Beschreibung: Ändern Sie einfach die Methoden der oben genannten Multiple-Factory-Methodenmuster in statische Bezeichner, sodass sie SendFactory nicht instanziieren müssen Der Factory-Klassencode wird wie folgt geändert:
var factory = new SendFactory(); var sender = factory.produceSms(); //produceMail sender.to = 'toName#xxxxx'; sender.title = '短信发送方法标题'; sender.content = '发送内容'; sender.send();Verwendung:
Factory-Methodenmusterbeschreibung
Anweisungen zur Objektorientierung ProgrammierungWenn viele Produkte (reale Modelle, Namen: Klassennamen, Mitgliedsattribute, Operationsmethoden usw.) initialisiert werden müssen, dh Produkte erstellt werden müssen und [dieselbe Schnittstelle implementiert] ist, können Sie dies tun Verwenden Sie das Factory-Methodenmuster. Es ist möglich, dass der Eingabetyp im zweiten Modus falsch ist.
var SendFactory = { produceMail : function() { return new MailSender(); }, produceSms : function() { return new SmsSender(); } }Das Obige ist der gesamte Inhalt dieses Kapitels Weitere verwandte Tutorials finden Sie unter
JavaScript-Video-Tutorial
!var sender = SendFactory.produceMail(); sender.to = 'toName#mail.com'; sender.title = '邮件发送标题'; sender.content = '发送内容'; sender.send();