手机
当前位置:查字典教程网 >编程开发 >Javascript教程 >JavaScript设计模式之工厂方法模式介绍
JavaScript设计模式之工厂方法模式介绍
摘要:1.简单工厂模式说明:就是创建一个工厂类,里面实现了所对同一个接口的实现类的创建。但是好像JavaScript好像没有接口这号东西,所以我们...

1. 简单工厂模式

说明:就是创建一个工厂类,里面实现了所对同一个接口的实现类的创建。

但是好像JavaScript 好像没有 接口 这号东西,所以我们去掉接口这个层; 当然,我们这里的 实现类 下的成员变量,方法应该都是一样的;

例如:这时举短信发送跟邮件发送的例子;

1>. 邮件发送[实现]类

复制代码 代码如下:

function MailSender() {

this.to = '';

this.title = '';

this.content = '';

}

MailSender.prototype.send = function() {

//send body

}

2>. 短信发送[实现]类

复制代码 代码如下:

function SmsSender() {

this.to = '';

this.title = '';

this.content = '';

}

SmsSender.prototype.send = function() {

//send body

}

3>. 创建一个工厂类:

复制代码 代码如下:

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>. 使用这个工厂类:

复制代码 代码如下:

var factory = new SendFactory();

var sender = factory.produce('mail'); //sms

sender.to = 'toName#mail.com';

sender.title = '邮件测试标题!';

sender.content = '发送内容';

sender.send();

2. 多个工厂方法模式

说明:多个工厂模式方法,是对普通工厂方法的改进,因为返回实现是依据传进去的字符返回,当字符输入错误,可能就无法处理,或是处理成错误的方式; 而多个工厂模式方法,就可以避免这样的错误;

我们对上面的工厂类进行改进:

复制代码 代码如下:

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;

}

使用方法:

复制代码 代码如下:

var factory = new SendFactory();

var sender = factory.produceSms(); //produceMail

sender.to = 'toName#xxxxx';

sender.title = '短信发送方法标题';

sender.content = '发送内容';

sender.send();

3. 静态工厂方法模式

说明:将上面的 多个工厂方法模式 的方法改为静态标识即可,使之不必对 SendFactory 进行实例化;

将工厂类代码修改如下:

复制代码 代码如下:

var 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();

工厂方法模式说明

在面向对象思想编程说明,在具有很多产品(现实世界模型,名称:类名,成员属性,及操作方法等)需要初始化,即产品需要创建,并且[实现同一接口时],可以使用工厂方法模式; 第一种模式,有输入类型错误的可能,第二模式,需要用时即创建工厂实例;

【JavaScript设计模式之工厂方法模式介绍】相关文章:

javascript获取select值的方法分析

javascript实现行拖动的方法

JavaScript 定时器 SetTimeout之定时刷新窗口和关闭窗口(代码超简单)

简述JavaScript中正则表达式的使用方法

javascript实现动态改变层大小的方法

javascript自定义右键弹出菜单实现方法

JavaScript中的acos()方法使用详解

JavaScript中valueOf()方法的使用介绍

javascript实现设置、获取和删除Cookie的方法

JavaScript操作Cookie方法实例分析

精品推荐
分类导航