Abstrakte Fabrikmuster Beschreibung
1. Probleme mit dem Fabrikmethodenmodell: Im Factory -Methodenmodell muss das Erstellen von Klassen durch die Fabrikklasse erstellt werden. Wenn Sie das Programm erweitern möchten, müssen Sie die Fabrikklasse ändern. Dies verstößt gegen das Verschlussprinzip, öffnet sich für Erweiterungen und schließt sich für Modifikationen ab. Es gibt bestimmte Probleme mit dem Design.
2. Wie man es löst: Sie müssen das abstrakte Fabrikmodell verwenden, was bedeutet, Fabrikklassen für die Funktionsklassen separat zu erstellen, damit Sie den vorherigen Code nicht ändern und die Funktionen erweitern müssen.
3. Das Werksmodell erstellt tatsächlich Aufrufe an die Unified Factory -Methode zur Implementierung der Implementierungsklasse, die dieselbe Schnittstelle implementiert, aber JavaScript hat nicht die Schnittstellennummer, sodass diese Implementierungsschicht entfernt wird, die Mitglieder und Methoden der Bit -Funktionsklasse sollten jedoch gleich sein.
Beispiel für abstrakte Fabrikquellencode
1. E -Mail -Sendenklasse :
Die Codekopie lautet wie folgt:
Funktion mailSender () {
this.to = '';
this.title = '';
this.content = '';
}
MailSender.Prototype.Send = function () {
// Körper senden
}
2. SMS Sendenklasse:
Die Codekopie lautet wie folgt:
Funktion SMSSSender () {
this.to = '';
this.title = '';
this.content = '';
}
SmSSender.Prototype.send = function () {
// Körper senden
}
3. Dies ist ursprünglich eine Fabrik -Schnittstellenklasse, wird aber hier entfernt. Erstellen Sie direkt verschiedene Funktionsklassenfabriken ;
1>. Mail -Fabrikkategorie:
Die Codekopie lautet wie folgt:
Funktion mailfactory () {
}
Mailfactory.Prototype.Produce = function () {
Neue Mailsender zurückgeben ();
}
2>. SMS -Fabrikkategorie:
Die Codekopie lautet wie folgt:
Funktion smsfactory () {
}
Smsfactory.prototype.produce = function () {
Neue SMSSender () zurückgeben;
}
4.. Wie man verwendet:
Die Codekopie lautet wie folgt:
var factory = new Mailfactory ();
var senger = factory.produce ();
Sender.to = 'toname#Mail.com';
Sender.title = 'abstraktes Fabrikmuster';
Sender.Content = 'Inhalt senden';
Sender.Send ();
Andere Anweisungen
Der Werksmodus, der in objektorientierten Sprachen wie Java und .NET C# verwendet wird. Schnittstellen sind verfügbare Methoden, um verschiedenen externen Benutzern auszusetzen und zu erklären, welche Methoden zur Anwendung dieser Funktion und wie Benutzer diese Schnittstelle verwenden sollten. Objekte werden in Form von Klassen ausgedrückt, die eine gewisse Abstraktion in der realen Welt darstellen. Vielleicht wird die Szene viele ähnliche Anwendungen haben, wie z. B. E -Mail -Senden, SMS -Senden und verschiedene Werbemethoden im Einkaufszentrum sowie verschiedene Vögel und Bestien in der Tierwelt.
Wenn wir den Benutzern nicht die Verwendung des Benutzers in Form einer Schnittstelle zur Verfügung stellen, werden wir den Benutzern zwangsläufig die realen Funktionsklassenobjekte zur Verfügung stellen, und Benutzer können die Klassenobjekte nach Belieben ändern und erweitern, was nicht zulässig ist.
Der Werksmethodenmodus und der abstrakte Werksmodus können solche Probleme gut lösen. Benutzer können nur die Schnittstelle verwenden, um die Werksklasse aufzurufen, um bestimmte Operationen auszuführen. Der abstrakte Werksmodus verwendet die Erweiterungsfunktion weiter, und die Funktionsklasse und die Fabrikklasse implementieren die jeweilige Erweiterung der Klassenebene auf der entsprechenden Schnittstelle und beinhalten nicht die Änderung anderer Klassen oder Methoden.