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 }
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; }
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; }
var factory = new SendFactory(); var sender = factory.produceSms(); //produceMail sender.to = 'toName#xxxxx'; sender.title = '短信发送方法标题'; sender.content = '发送内容'; sender.send();
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(); } }
JavaScript-Video-Tutorial
!var sender = SendFactory.produceMail(); sender.to = 'toName#mail.com'; sender.title = '邮件发送标题'; sender.content = '发送内容'; sender.send();