Maison > interface Web > js tutoriel > Description détaillée des compétences de l'usine abstraite javascript pattern_javascript

Description détaillée des compétences de l'usine abstraite javascript pattern_javascript

WBOY
Libérer: 2016-05-16 16:26:33
original
1654 Les gens l'ont consulté

Description abstraite du modèle d'usine

1. Problèmes avec le modèle de méthode d'usine : Dans le modèle de méthode d'usine, la création d'une classe nécessite de transmettre la classe d'usine. Si vous souhaitez étendre le programme, vous devez modifier la classe d'usine. Cela viole le principe de fermeture et est ouvert. à extension mais fermé à modification ; Il y a certains problèmes avec la conception.

2. Comment résoudre : nous devons utiliser le modèle d'usine abstrait, qui consiste à créer une classe d'usine séparément pour la classe fonctionnelle, afin qu'il ne soit pas nécessaire de modifier le code précédent et que la fonction soit étendue.

3. Le modèle d'usine est en fait une méthode d'usine unifiée pour créer et appeler des classes d'implémentation qui implémentent la même interface. Cependant, JavaScript n'a pas d'interface, donc cette couche d'implémentation est supprimée, mais les membres et les méthodes de. les classes fonctionnelles doivent être les mêmes

Exemple de code source d'usine abstrait

1. Cours d'envoi d'e-mails :

Copier le code Le code est le suivant :

fonction MailSender() {
Ceci.to = '';
Ce.titre = '';
This.content = '';
>
MailSender.prototype.send = function() {
//envoyer le corps
>

2. Catégorie d'envoi de SMS :

Copier le code Le code est le suivant :

fonction SmsSender() {
Ceci.to = '';
Ce.titre = '';
This.content = '';
>
SmsSender.prototype.send = function() {
//envoyer le corps
>

3. La classe d'interface d'usine a été créée à l'origine ici, mais elle est supprimée ici directement créer diverses usines de classes fonctionnelles;

1>. Classe d'usine de courrier :

Copier le code Le code est le suivant :

fonction MailFactory() {
 
>
MailFactory.prototype.produce = function() {
Renvoie le nouveau MailSender();
>

2>. Classe d'usine SMS :

Copier le code Le code est le suivant :

fonction SmsFactory() {
 
>
SmsFactory.prototype.produce = function() {
Renvoie le nouveau SmsSender();
>

4. Comment utiliser :

Copier le code Le code est le suivant :

var usine = new MailFactory();
var expéditeur = factory.produce();
sender.to = 'toname#mail.com';
sender.title = 'Modèle d'usine abstrait';
sender.content = 'Envoyer du contenu';
expéditeur.send();

Autres consignes

Le modèle d'usine utilisé dans les langages orientés objet tels que Java et .net C# utilise tous des interfaces. Les interfaces sont des méthodes disponibles exposées à divers utilisateurs. Elles décrivent quelles méthodes sont utilisées pour appliquer cette fonction et comment les utilisateurs doivent l'utiliser. . Les objets sont exprimés sous forme de classes, représentant une sorte d'abstraction dans le monde réel. Peut-être que la scène a de nombreuses applications similaires, telles que l'envoi d'e-mails, l'envoi de SMS ci-dessus, diverses méthodes promotionnelles dans les centres commerciaux et le monde animal. oiseaux et animaux, etc.

Si nous ne fournissons pas d'interfaces aux utilisateurs, nous fournirons inévitablement de véritables objets de classe fonctionnels aux utilisateurs. Les utilisateurs peuvent modifier et étendre les objets de classe à volonté, ce qui n'est pas autorisé.

Le modèle de méthode d'usine et le modèle d'usine abstrait peuvent très bien résoudre ce problème. Les utilisateurs ne peuvent utiliser l'interface que pour appeler la classe d'usine afin d'effectuer des opérations spécifiées ; le modèle d'usine abstrait facilite en outre l'utilisation des fonctions étendues et des usines. Les classes implémentent leurs propres extensions au niveau de la classe sur les interfaces correspondantes et n'impliqueront pas de modification d'autres classes ou méthodes

 ;
Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal