javascript抽象工厂模式详细说明

 更新时间:2014年12月16日 09:33:52   投稿:hebedich  
这篇文章主要介绍了javascript抽象工厂模式详细说明,需要的朋友可以参考下

抽象工厂模式说明

1. 工厂方法模式的问题: 在工厂方法模式里,创建类都需要通过 工厂类,如果要扩展程序,就必须修改工厂类,这违背了闭包原则,对扩展开放,对修改关闭;对于设计有一定的问题。
 
2. 如何解决:就要用到抽象工厂模式,就是对功能类单独创建工厂类,这样就不必修改之前的代码,又扩展了功能。
 
3. 工厂模式其实就是对 实现同一接口的 实现类 的 统一 工厂方式创建调用,但 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. 这里本来是创建工厂接口类,这里就去掉了; 直接创建各功能类工厂;
 
1>. 邮件工厂类:
 

复制代码 代码如下:

function MailFactory() {
   
}
MailFactory.prototype.produce = function() {
    return new MailSender();
}

2>. 短信工厂类:

复制代码 代码如下:

function SmsFactory() {
   
}
SmsFactory.prototype.produce = function() {
    return new SmsSender();
}

4. 使用方法:

复制代码 代码如下:

var factory = new MailFactory();
var sender = factory.produce();
sender.to = 'toname#mail.com';
sender.title = '抽象工厂模式';
sender.content = '发送内容';
sender.send();

其他说明

在面向对象语言如 java,.net C# 使用的工厂模式,都用到接口,接口是对外向各种用户暴露的可用方法,说明这个功能应用有些什么的方法应用,用户应该怎么用这个接口。对象以类的形式表现出来,代表现实世界中的某种抽象,也许场景会有很多类似的应用,比如上面的 邮件发送,短信发送,再比如商场中的各种促销手段,以及动物世界中的各种飞禽走兽等..

如果我们不以接口形式提供用户使用,势必提供暴露真实的功能类对象给用户,用户可以随意对类对象进行修改跟扩展,这是不允许的。

工厂方法模式 跟 抽象工厂模式可以很好的解决这样的问题,用户只能使用接口调用工厂类,来进行规定的操作;抽象工厂模式更进一步使用扩展功能变得容易,功能类跟工厂类都在实现相应的接口上实现各自类级别的扩展,不会涉及修改到其他的类或方法;

相关文章

  • JavaScrip String对象的方法

    JavaScrip String对象的方法

    这篇文章主要为大家介绍了String对象的方法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2021-12-12
  • 浅析js 文字滚动效果

    浅析js 文字滚动效果

    文字滚动显示,是网页企业公告,文字链广告常用的一种效果,说不定在什么时候你就能看到它。
    2010-05-05
  • 浅谈javascript六种数据类型以及特殊注意点

    浅谈javascript六种数据类型以及特殊注意点

    这篇文章主要介绍了javascript六种数据类型以及特殊注意点,有需要的朋友可以参考一下
    2013-12-12
  • JavaScript中读取和保存文件实例

    JavaScript中读取和保存文件实例

    这篇文章主要介绍了JavaScript中读取和保存文件实例,使用HTML5 File API实现,需要的朋友可以参考下
    2014-05-05
  • JavaScript实现简单图片翻转的方法

    JavaScript实现简单图片翻转的方法

    这篇文章主要介绍了JavaScript实现简单图片翻转的方法,涉及javascript操作图片与数组的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-04-04
  • js的alert样式如何更改如背景颜色

    js的alert样式如何更改如背景颜色

    如何更改js的alert样式如:弹出对话框时的背景颜色、背景透明等等,下面有效果图,感兴趣的朋友可以学习下
    2014-01-01
  • ES6中Generator与异步操作实例分析

    ES6中Generator与异步操作实例分析

    这篇文章主要介绍了ES6中Generator与异步操作,结合实例形式分析Generator的概念、功能及相关操作技巧,需要的朋友可以参考下
    2017-03-03
  • javascript实现回到顶部特效

    javascript实现回到顶部特效

    当页面特别长的时候,用户想回到页面顶部,必须得滚动好几次滚动键才能回到顶部,如果在页面右下角有个“返回顶部”的按钮,用户点击一下,就可以回到顶部,对于用户来说,是一个比较好的体验。
    2015-05-05
  • 一文看懂如何简单实现节流函数和防抖函数

    一文看懂如何简单实现节流函数和防抖函数

    这篇文章主要给大家介绍了如何通过一文看懂简单实现节流函数和防抖函数的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面来一起学习学习吧
    2019-09-09
  • node.js 一个简单的页面输出实现代码

    node.js 一个简单的页面输出实现代码

    最近决定重拾node.js,用它来做一个合并JS文件的东西。由于忘得差不多了,先看能不能输出一个页面来再说。以下是我的一些笔记,省得以后又忘净光
    2012-03-03

最新评论