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 25 Javascript
Package.js  现代化的JavaScript项目make工具
May 23 Javascript
JavaScript模块随意拖动示例代码
May 27 Javascript
字段太多jquey快速清空表单内容方法
Aug 21 Javascript
原生js实现图片层叠轮播切换效果
Feb 02 Javascript
jQuery的层级查找方式分析
Jun 16 Javascript
利用HTML5+Socket.io实现摇一摇控制PC端歌曲切换
Jan 13 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
Apr 01 Javascript
在微信小程序里使用watch和computed的方法
Aug 02 Javascript
小程序异步问题之多个网络请求依次执行并依次收集请求结果
May 05 Javascript
使用vue-cli3+typescript的项目模板创建工程的教程
Feb 28 Javascript
jQuery加PHP实现图片上传并提交的示例代码
Jul 16 jQuery
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
印尼林东PWN黄金曼特宁咖啡豆:怎么冲世界上最醇厚的咖啡冲煮教程
2021/03/03 冲泡冲煮
数字转英文
2006/12/06 PHP
解析关于java,php以及html的所有文件编码与乱码的处理方法汇总
2013/06/24 PHP
PHP中preg_match函数正则匹配的字符串长度问题
2015/05/27 PHP
PHP生成短网址方法汇总
2016/07/12 PHP
PHP单例模式数据库连接类与页面静态化实现方法
2019/03/20 PHP
javascript vvorld 在线加密破解方法
2008/11/13 Javascript
jQuery渐变发光导航菜单的实例代码
2013/03/27 Javascript
jQuery封装的获取Url中的Get参数示例
2013/11/26 Javascript
原生js的弹出层且其内的窗口居中
2014/05/14 Javascript
JavaScript实现N皇后问题算法谜题解答
2014/12/29 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
JavaScript中getUTCSeconds()方法的使用详解
2015/06/11 Javascript
微信支付如何实现内置浏览器的H5页面支付
2015/09/25 Javascript
JavaScript操作HTML DOM节点的基础教程
2016/03/11 Javascript
AngularJS ng-change 指令的详解及简单实例
2016/07/30 Javascript
JS不完全国际化&amp;本地化手册 之 理论篇
2016/09/27 Javascript
JS常用算法实现代码
2016/11/14 Javascript
Javascript中字符串replace方法的第二个参数探究
2016/12/05 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
2017/06/19 Javascript
使用vue-cli webpack 快速搭建项目的代码
2018/11/21 Javascript
通过JavaScript下载文件到本地的方法(单文件)
2019/03/17 Javascript
vue-drag-chart 拖动/缩放图表组件的实例代码
2020/04/10 Javascript
解决echarts 一条柱状图显示两个值,类似进度条的问题
2020/07/20 Javascript
[02:01]BBC DOTA2国际邀请赛每日综述:八强胜者组鏖战,中国队喜忧参半
2014/07/19 DOTA
Python对象的深拷贝和浅拷贝详解
2014/08/25 Python
MySQL最常见的操作语句小结
2015/05/07 Python
Python编程中的文件读写及相关的文件对象方法讲解
2016/01/19 Python
Python实现的弹球小游戏示例
2017/08/01 Python
微信跳一跳小游戏python脚本
2018/01/05 Python
Python实现XML文件解析的示例代码
2018/02/05 Python
Python编写一个优美的下载器
2018/04/15 Python
对Python3中的print函数以及与python2的对比分析
2018/05/02 Python
解决Tensorflow 内存泄露问题
2020/02/05 Python
SQL Server里面什么样的视图才能创建索引
2015/04/17 面试题
试用期员工考核制度
2014/01/22 职场文书