Maison > interface Web > js tutoriel > le corps du texte

Introduction au modèle d'usine abstrait des modèles de conception JavaScript_compétences Javascript

WBOY
Libérer: 2016-05-16 16:24:03
original
1272 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, mais JavaScript n'a pas d'interface, donc cette couche d'implémentation est supprimée, mais les membres et les méthodes du les classes fonctionnelles doivent être les mêmes ;

Exemple de code source d'usine abstrait

1. Type d'envoi d'e-mail :


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 ; chaque usine de classe fonctionnelle est créée directement ;

1>. Classe d'usine de courrier :


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


2>. Classe d'usine SMS :



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


4. Comment utiliser :



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

 ;

Bien sûr, il n'y a aucun moyen de faire cela dans un langage comme javascript. Les programmeurs doivent être autodisciplinés !

É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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!