Heim >Web-Frontend >js-Tutorial >Einführung in das Factory-Methodenmuster von JavaScript-Entwurfsmustern

Einführung in das Factory-Methodenmuster von JavaScript-Entwurfsmustern

PHPz
PHPzOriginal
2016-05-16 16:24:021509Durchsuche

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-Methodenmuster

function 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();
Stellungnahme:
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