Cet article présente principalement l'introduction du modèle de méthode d'usine dans les modèles de conception JavaScript. Cet article explique le modèle d'usine simple, les modèles de méthodes d'usine multiples, etc. Les amis dans le besoin peuvent s'y référer
1. Modèle d'usine simple
Explication : Il s'agit de créer une classe d'usine, qui implémente la création de classes d'implémentation pour la même interface.
Mais il semble que JavaScript n'ait pas d'interface, nous supprimons donc la couche d'interface ; bien sûr, les variables et méthodes membres de notre classe d'implémentation devraient être les mêmes ; >Par exemple : Voici des exemples d'envoi de SMS et d'envoi d'e-mails ;
1 Classe d'envoi d'e-mails [implémentation]
2. 🎜>function MailSender() { this.to = ''; this.title = ''; this.content = ''; } MailSender.prototype.send = function() { //send body }
function SmsSender() { this.to = ''; this.title = ''; this.content = ''; } SmsSender.prototype.send = function() { //send body }
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; }
2. 🎜>
Explication : plusieurs méthodes en mode usine constituent une amélioration par rapport aux méthodes d'usine ordinaires, car l'implémentation du retour est basée sur les caractères transmis. Lorsque les caractères sont saisis de manière incorrecte, ils peuvent ne pas être traités, ou ils peuvent être traités dans dans le mauvais sens ; et plusieurs méthodes de modèles d'usine peuvent éviter de telles erreurs ;var factory = new SendFactory(); var sender = factory.produce('mail'); //sms sender.to = 'toName#mail.com'; sender.title = '邮件测试标题!'; sender.content = '发送内容'; sender.send();
Nous améliorons la classe d'usine ci-dessus :
Méthode d'utilisation : 3. Modèle de méthode d'usine statiquefunction 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; }
var factory = new SendFactory(); var sender = factory.produceSms(); //produceMail sender.to = 'toName#xxxxx'; sender.title = '短信发送方法标题'; sender.content = '发送内容'; sender.send();
Utilisation :
Description du modèle de méthode Factoryvar SendFactory = { produceMail : function() { return new MailSender(); }, produceSms : function() { return new SmsSender(); } }
var sender = SendFactory.produceMail(); sender.to = 'toName#mail.com'; sender.title = '邮件发送标题'; sender.content = '发送内容'; sender.send();
!