JavaScript设计模式经典之工厂模式


Posted in Javascript onFebruary 24, 2016

一、工厂模式概念

工厂模式定义一个用于创建对象的接口,这个接口由子类决定实例化哪一个类。该模式使一个类的实例化延迟到了子类。而子类可以重写接口方法以便创建的时候指定自己的对象类型(抽象工厂)。

这个模式十分有用,尤其是创建对象的流程赋值的时候,比如依赖于很多设置文件等。并且,你会经常在程序里看到工厂方法,用于让子类定义需要创建的对象类型。

二、工厂模式的作用和注意事项

模式作用:

1、对象构建十分复杂--我们穿鞋很简单,但是制作鞋子的过程十分复杂

2、需要依赖具体的环境创建不同的实例--工厂可以做鞋子,做衣服,工厂可以做我需要的鞋子(鞋子不同),然后送到指定的地方(地方可以不同),可以理解为不同的实例

3、处理大量具有相同属性的小对象--比如买一双鞋,没必要找工厂生产

注意事项:

1、不能滥用工厂,有时候仅仅是给代码增加复杂度--如上3

三、工厂模式代码和实战总结

<!DOCTYPE html>
<html>
<head lang="en">
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
//1.工厂应该有厂长来决定运行到底哪条产品线
//2.消费者-》子类
var gongchang = {};
gongchang.chanyifu = function(){
this.gongren = 50;
alert("我们有"+this.gongren);
}
gongchang.chanxie = function(){
this.gongren = 100;
alert("产鞋子");
}
gongchang.yunshu = function(){
this.gongren = 10;
alert("运输");
}
gongchang.changzhang = function(para){
return new gongchang[para]();
}
var me = gongchang.changzhang("chanxie");
alert(me.gongren);
</script>
</body>
</html>

以上所述是小编给大家介绍的JavaScript设计模式经典之工厂模式,希望对大家有所帮助!

Javascript 相关文章推荐
xml和web特殊字符
Apr 28 Javascript
jQuery对象与DOM对象之间的转换方法
Apr 15 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
Apr 18 Javascript
jQuery调用AJAX时Get和post公用的乱码解决方法实例说明
Jun 04 Javascript
用原生JS获取CLASS对象(很简单实用)
Oct 15 Javascript
jquery队列函数用法实例
Dec 16 Javascript
js常用系统函数用法实例分析
Jan 12 Javascript
JS往数组中添加项性能分析
Feb 25 Javascript
基于Node.js实现nodemailer邮件发送
Jan 26 Javascript
使用Promise解决多层异步调用的简单学习心得
May 17 Javascript
vue-cli初始化项目中使用less的方法
Aug 09 Javascript
laypage+SpringMVC实现后端分页
Jul 27 Javascript
JavaScript的设计模式经典之建造者模式
Feb 24 #Javascript
JavaScript的设计模式经典之代理模式
Feb 24 #Javascript
jQuery实现验证年龄简单思路
Feb 24 #Javascript
JavaScript实现99乘法表及隔行变色实例代码
Feb 24 #Javascript
JavaScript中Object.prototype.toString方法的原理
Feb 24 #Javascript
JavaScript判断变量是否为数组的方法(Array)
Feb 24 #Javascript
浅析jQuery Ajax请求参数和返回数据的处理
Feb 24 #Javascript
You might like
php基于闭包实现函数的自调用(递归)实例分析
2016/11/11 PHP
thinkPHP利用ajax异步上传图片并显示、删除的示例
2018/09/26 PHP
window.addeventjs事件驱动函数集合addEvent等
2008/02/19 Javascript
flexigrid 类似ext grid的JS表格代码
2010/07/17 Javascript
基于jquery可配置循环左右滚动例子
2011/09/09 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
js 删除数组的几种方法小结
2014/02/21 Javascript
NodeJs基本语法和类型
2015/02/13 NodeJs
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
微信小程序 本地数据存储实例详解
2017/04/13 Javascript
Angular2数据绑定详解
2017/04/18 Javascript
javascript trie前缀树的示例
2018/01/29 Javascript
JS实现的抛物线运动效果示例
2018/01/30 Javascript
基于jQuery实现无缝轮播与左右点击效果
2018/05/13 jQuery
webpack4.x打包过程详解
2018/07/18 Javascript
vue列表数据发生变化指令没有更新问题及解决方法
2020/01/16 Javascript
ng-alain的sf如何自定义部件的流程
2020/06/12 Javascript
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
Python的迭代器和生成器使用实例
2015/01/14 Python
python在linux系统下获取系统内存使用情况的方法
2015/05/11 Python
Python实现telnet服务器的方法
2015/07/10 Python
python使用psutil模块获取系统状态
2016/08/27 Python
微信 用脚本查看是否被微信好友删除
2016/10/28 Python
深入浅析Python中list的复制及深拷贝与浅拷贝
2018/09/03 Python
详解利用OpenCV提取图像中的矩形区域(PPT屏幕等)
2019/07/01 Python
python数据预处理之数据标准化的几种处理方式
2019/07/17 Python
Python3 操作 MySQL 插入一条数据并返回主键 id的实例
2020/03/02 Python
利用css3 translate完美实现表头固定效果
2017/02/28 HTML / CSS
为什么使用接口?
2014/08/13 面试题
飞利信loadrunner和软件测试笔试题
2012/09/22 面试题
毕业生的求职信范文分享
2013/12/04 职场文书
运动会跳远广播稿
2015/08/19 职场文书
python用海龟绘图写贪吃蛇游戏
2021/06/18 Python
nginx负载功能+nfs服务器功能解析
2022/02/28 Servers
关于CSS自定义属性与前端页面的主题切换问题
2022/03/21 HTML / CSS
CKAD认证中部署k8s并配置Calico插件
2022/03/31 Servers