Description du modèle d'usine abstraite
1. Problèmes avec le modèle de méthode d'usine: Dans le modèle de méthode d'usine, la création de classes nécessite le passage de la classe d'usine. Si vous souhaitez étendre le programme, vous devez modifier la classe d'usine. Cela viole le principe de fermeture, s'ouvre pour les extensions et les clôtures pour les modifications; Il y a certains problèmes avec la conception.
2. Comment le résoudre: vous devez utiliser le modèle Abstract Factory, ce qui signifie créer des classes d'usine pour les classes fonctionnelles séparément, afin que vous n'ayez pas à modifier le code précédent et à étendre les fonctions.
3. Le modèle d'usine crée en fait des appels vers la méthode d'usine unifiée d'implémentation de la classe d'implémentation qui implémente la même interface, mais JavaScript n'a pas le numéro d'interface, de sorte que cette couche d'implémentation est supprimée, mais les membres et les méthodes de la classe de fonction bit devraient être les mêmes;
Résumé Exemple de code source d'usine
1. Email Envoi du cours :
La copie de code est la suivante:
fonction MailSender () {
this.to = '';
this.title = '';
this.Content = '';
}
MailSender.prototype.Send = function () {
// Envoi du corps
}
2. SMS Envoi: cours:
La copie de code est la suivante:
fonction SMSSender () {
this.to = '';
this.title = '';
this.Content = '';
}
SmsSender.prototype.Send = function () {
// Envoi du corps
}
3. Il s'agit à l'origine d'une classe d'interface d'usine, mais elle est supprimée ici; Créez directement diverses usines de classe fonctionnelle ;
1>. Catégorie d'usine de courrier:
La copie de code est la suivante:
fonction MailFactory () {
}
Mailfactory.prototype.produce = function () {
retourner new MailSender ();
}
2>. Catégorie d'usine SMS:
La copie de code est la suivante:
fonction smsfactory () {
}
Smsfactory.prototype.produce = function () {
retourner de nouveaux smsSender ();
}
4. Comment utiliser:
La copie de code est la suivante:
var factory = new MailFactory ();
var Sender = Factory.Produce ();
Sender.to = 'Toname # Mail.com';
Sender.Title = «Résumé Modèle d'usine»;
Sender.Content = 'Send Content';
Sender.Send ();
Autres instructions
Le mode d'usine utilisé dans les langages orientés objet tels que Java et .NET C # Utilisez des interfaces. Les interfaces sont des méthodes disponibles pour exposer à divers utilisateurs externes, expliquant les méthodes à appliquer cette fonction et comment les utilisateurs doivent utiliser cette interface. Les objets sont exprimés sous la forme de classes, représentant une certaine abstraction dans le monde réel. Peut-être que la scène aura de nombreuses applications similaires, telles que l'envoi d'e-mails, l'envoi de SMS et diverses méthodes promotionnelles dans le centre commercial, ainsi que divers oiseaux et bêtes dans le monde animal.
Si nous ne fournissons pas aux utilisateurs l'utilisation de l'utilisateur sous la forme d'une interface, nous fournirons inévitablement aux utilisateurs les objets de classe fonctionnels réels, et les utilisateurs peuvent modifier et étendre les objets de classe à volonté, ce qui n'est pas autorisé.
Le mode Méthode d'usine et le mode d'usine abstrait peuvent bien résoudre ces problèmes. Les utilisateurs ne peuvent utiliser l'interface que pour appeler la classe d'usine pour effectuer des opérations spécifiées; Le mode d'usine abstrait utilise en outre la fonction d'extension, et la classe fonctionnelle et la classe d'usine implémentent l'extension au niveau de la classe respective sur l'interface correspondante et n'impliqueront pas de modification d'autres classes ou méthodes;