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 相关文章推荐
javascript贪吃蛇完整版(源码)
Dec 09 Javascript
javascript动态判断html元素并执行不同的操作
Jun 16 Javascript
JavaScript设计模式之工厂模式和构造器模式
Feb 11 Javascript
JavaScript继承模式粗探
Jan 12 Javascript
Javascript 链式作用域详细介绍
Feb 23 Javascript
angularjs中的$eval方法详解
Apr 24 Javascript
JS使用正则表达式验证身份证号码
Jun 23 Javascript
示例vue 的keep-alive缓存功能的实现
Dec 13 Javascript
微信小程序实现联动选择器
Feb 15 Javascript
swiper Scrollbar滚动条组件详解
Sep 08 Javascript
JavaScript实现多层颜色选项卡嵌套
Sep 21 Javascript
解决基于 keep-alive 的后台多级路由缓存问题
Dec 23 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
一个可以找出源代码中所有中文的工具
2006/10/25 PHP
PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT
2013/03/06 PHP
php对二维数组进行排序的简单实例
2013/12/19 PHP
php实现使用正则将文本中的网址转换成链接标签
2014/12/03 PHP
thinkPHP5.0框架自动加载机制分析
2017/03/18 PHP
利用WebBrowser彻底解决Web打印问题(包括后台打印)
2009/06/22 Javascript
理解Javascript_15_作用域分配与变量访问规则,再送个闭包
2010/10/20 Javascript
使用JavaScript 实现对象 匀速/变速运动的方法
2013/05/08 Javascript
jquery实现div阴影效果示例代码
2013/09/16 Javascript
js判断是否按下了Shift键的方法
2015/01/27 Javascript
JS中对象与字符串的互相转换详解
2016/05/20 Javascript
JavaScript实现相册弹窗功能(zepto.js)
2016/06/21 Javascript
jQuery实现下拉框多选 jquery-multiselect 的实例代码
2016/07/14 Javascript
深入理解Angularjs中的$resource服务
2016/12/31 Javascript
微信小程序 地图map详解及简单实例
2017/01/10 Javascript
基于JavaScript定位当前的地理位置
2017/04/11 Javascript
解决vue的 v-for 循环中图片加载路径问题
2018/09/03 Javascript
vue-cli脚手架搭建的项目去除eslint验证的方法
2018/09/29 Javascript
使用koa2创建web项目的方法步骤
2019/03/12 Javascript
通过原生vue添加滚动加载更多功能
2019/11/21 Javascript
javascript事件循环event loop的简单模型解释与应用分析
2020/03/14 Javascript
JavaScript中CreateTextFile函数
2020/08/30 Javascript
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
python抓取百度首页的方法
2015/05/19 Python
python神经网络编程实现手写数字识别
2020/05/27 Python
python 服务器运行代码报错ModuleNotFoundError的解决办法
2020/09/16 Python
详解css3使用transform出现字体模糊的解决办法
2020/10/16 HTML / CSS
HTML里显示pdf、word、xls、ppt的方法示例
2020/04/14 HTML / CSS
Hanky Panky官方网站:内衣和睡衣
2019/07/25 全球购物
英国珠宝和手表专家:Pleasance & Harper
2020/10/21 全球购物
文秘人员工作职责
2014/01/31 职场文书
《欢乐的泼水节》教学反思
2014/04/22 职场文书
学雷锋演讲稿汇总
2014/05/10 职场文书
房屋授权无偿使用证明
2014/11/29 职场文书
接待员岗位职责范本
2015/04/15 职场文书
导游词之山东八大关
2019/12/18 职场文书