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 相关文章推荐
js单向链表的具体实现实例
Jun 21 Javascript
jquery iframe操作详细解析
Nov 20 Javascript
防止登录页面出现在frame中js代码
Jul 22 Javascript
教你如何使用firebug调试功能了解javascript闭包和this
Mar 04 Javascript
jQuery实现强制cookie过期方法汇总
May 22 Javascript
jquery密码强度校验
Dec 02 Javascript
用 js 的 selection range 操作选择区域内容和图片
Apr 18 Javascript
parabola.js抛物线与加入购物车效果的示例代码
Oct 25 Javascript
详解vue-cli之webpack3构建全面提速优化
Dec 25 Javascript
Vue组件的使用及个人理解与介绍
Feb 09 Javascript
浅谈Vue页面级缓存解决方案feb-alive(上)
Apr 14 Javascript
小程序自定义模板实现吸顶功能
Jan 08 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
thinkphp实现like模糊查询实例
2014/10/29 PHP
PHP调用接口用post方法传送json数据的实例
2018/05/31 PHP
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
JavaScript异步调用定时方法并停止该方法实现代码
2012/03/16 Javascript
jQuery-Tools-overlay 使用介绍
2012/07/14 Javascript
一个js控制的导航菜单实例代码
2013/12/03 Javascript
删除条目时弹出的确认对话框
2014/06/05 Javascript
Nodejs为什么选择javascript为载体语言
2015/01/13 NodeJs
jQuery实现文本框输入同步的方法
2015/06/20 Javascript
javascript实现PC网页里的拖拽效果
2016/03/14 Javascript
jQuery EasyUI框架中的Datagrid数据表格组件结构详解
2016/06/09 Javascript
AngularJS 模块详解及简单实例
2016/07/28 Javascript
jQuery实现背景滑动菜单
2016/12/02 Javascript
ajax与json 获取数据并在前台使用简单实例
2017/01/19 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
JavaScript中的垃圾回收与内存泄漏示例详解
2019/05/02 Javascript
ES6中Set和Map用法实例详解
2020/03/02 Javascript
解决vue字符串换行问题(绝对管用)
2020/08/06 Javascript
antdesign-vue结合sortablejs实现两个table相互拖拽排序功能
2021/01/08 Vue.js
使用PYTHON创建XML文档
2012/03/01 Python
浅谈Python中带_的变量或函数命名
2017/12/04 Python
Python验证文件是否可读写代码分享
2017/12/11 Python
在PYQT5中QscrollArea(滚动条)的使用方法
2019/06/14 Python
Django Admin中增加导出Excel功能过程解析
2019/09/04 Python
python统计指定目录内文件的代码行数
2019/09/19 Python
django实现用户注册实例讲解
2019/10/30 Python
python实现简单的五子棋游戏
2020/09/01 Python
如何用H5实现一个触屏版的轮播器的实例
2017/01/09 HTML / CSS
名词解释WEB SERVICE,SOAP,UDDI,WSDL,JAXP,JAXM;JSWDL开发包的介绍。
2012/10/27 面试题
车间主任岗位职责
2014/03/16 职场文书
党的群众路线教育实践活动宣传标语口号
2014/06/06 职场文书
体育教师求职信
2014/06/30 职场文书
硕士毕业论文导师评语
2014/12/31 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
医院中层管理人员培训心得体会
2016/01/11 职场文书
Golang原生rpc(rpc服务端源码解读)
2022/04/07 Golang