源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

JavaScript设计模式之工厂方法模式介绍

  • 时间:2020-11-13 01:55 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:JavaScript设计模式之工厂方法模式介绍
[b]1. 简单工厂模式[/b] 说明:就是创建一个工厂类,里面实现了所对同一个接口的实现类的创建。 但是好像JavaScript 好像没有 接口 这号东西,所以我们去掉接口这个层; 当然,我们这里的 实现类 下的成员变量,方法应该都是一样的; 例如:这时举短信发送跟邮件发送的例子; 1>. 邮件发送[实现]类
[u]复制代码[/u] 代码如下:
function MailSender() {     this.to = '';     this.title = '';     this.content = ''; } MailSender.prototype.send = function() {     //send body }
2>. 短信发送[实现]类
[u]复制代码[/u] 代码如下:
function SmsSender() {     this.to = '';     this.title = '';     this.content = ''; } SmsSender.prototype.send = function() {     //send body }
3>. 创建一个工厂类:
[u]复制代码[/u] 代码如下:
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; }
4>. 使用这个工厂类:
[u]复制代码[/u] 代码如下:
var factory = new SendFactory(); var sender = factory.produce('mail'); //sms sender.to = 'toName#mail.com'; sender.title = '邮件测试标题!'; sender.content = '发送内容'; sender.send();
[b]2. 多个工厂方法模式[/b] 说明:多个工厂模式方法,是对普通工厂方法的改进,因为返回实现是依据传进去的字符返回,当字符输入错误,可能就无法处理,或是处理成错误的方式; 而多个工厂模式方法,就可以避免这样的错误; 我们对上面的工厂类进行改进:
[u]复制代码[/u] 代码如下:
function 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; }
使用方法:
[u]复制代码[/u] 代码如下:
var factory = new SendFactory(); var sender = factory.produceSms(); //produceMail sender.to = 'toName#xxxxx'; sender.title = '短信发送方法标题'; sender.content = '发送内容'; sender.send();
[b]3. 静态工厂方法模式[/b] 说明:将上面的 多个工厂方法模式 的方法改为静态标识即可,使之不必对 SendFactory 进行实例化; 将工厂类代码修改如下:
[u]复制代码[/u] 代码如下:
var SendFactory = {     produceMail : function() {         return new MailSender();     },     produceSms : function() {         return new SmsSender();     } }
使用方法:
[u]复制代码[/u] 代码如下:
var sender = SendFactory.produceMail(); sender.to = 'toName#mail.com'; sender.title = '邮件发送标题'; sender.content = '发送内容'; sender.send();
[b]工厂方法模式说明[/b] 在面向对象思想编程说明,在具有很多产品(现实世界模型,名称:类名,成员属性,及操作方法等)需要初始化,即产品需要创建,并且[实现同一接口时],可以使用工厂方法模式; 第一种模式,有输入类型错误的可能,第二模式,需要用时即创建工厂实例;
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部