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初学者应注意的七个细节小结
Jan 30 Javascript
jquery实现图片裁剪思路及实现
Aug 16 Javascript
jQuery 移动端artEditor富文本编辑器
Jan 11 Javascript
jQuery插件开发汇总
May 15 Javascript
详谈JS中实现种子随机数及作用
Jul 19 Javascript
Bootstrap导航条学习使用(一)
Feb 08 Javascript
利用Vue实现移动端图片轮播组件的方法实例
Aug 23 Javascript
jquery实现图片跟随鼠标的实例
Oct 17 jQuery
JavaScript实现写入文件到本地的方法【基于FileSaver.js插件】
Mar 15 Javascript
vue根据条件不同显示不同按钮的操作
Aug 04 Javascript
vue radio单选框,获取当前项(每一项)的value值操作
Sep 10 Javascript
Nest.js环境变量配置与序列化详解
Feb 21 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反弹shell实现代码
2009/04/22 PHP
PHP学习之字符串比较和查找
2011/04/17 PHP
php单例模式的简单实现方法
2016/06/10 PHP
Yii2.0实现生成二维码功能实例
2017/10/24 PHP
laravel框架添加数据,显示数据,返回成功值的方法
2019/10/11 PHP
jQuery表格行换色的三种实现方法
2011/06/27 Javascript
javascript的console.log()用法小结
2012/05/31 Javascript
用js判断页面是否加载完成实现代码
2012/12/11 Javascript
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
jquery实现未经美化的简洁TAB菜单效果
2015/08/28 Javascript
js带缩略图的图片轮播效果代码分享
2015/09/14 Javascript
快速学习JavaScript的6个思维技巧
2015/10/13 Javascript
JavaScript数据结构与算法之集合(Set)
2016/01/29 Javascript
jQuery 获取多选框的值及多选框中文的函数
2016/05/16 Javascript
第一次接触神奇的Bootstrap网格系统
2016/07/27 Javascript
js H5 canvas投篮小游戏
2016/08/18 Javascript
AngularJS实现树形结构(ztree)菜单示例代码
2016/09/18 Javascript
JS实现超简单的汉字转拼音功能示例
2016/12/22 Javascript
原生JS和jQuery操作DOM对比总结
2017/01/19 Javascript
基于JavaScript实现微信抢红包功能
2017/07/20 Javascript
原生JS实现的跳一跳小游戏完整实例
2019/01/27 Javascript
关于JavaScript 数组你应该知道的事情(推荐)
2019/04/10 Javascript
[02:53]DOTA2英雄基础教程 山岭巨人小小
2013/12/09 DOTA
Python 如何访问外围作用域中的变量
2016/09/11 Python
Python 装饰器实现DRY(不重复代码)原则
2018/03/05 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
2018/03/30 Python
Python合并同一个文件夹下所有PDF文件的方法
2019/03/11 Python
python dumps和loads区别详解
2020/02/04 Python
英国最大的奢侈珠宝和手表网站:C W Sellors
2017/02/10 全球购物
英国和世界各地鲜花速递专家:Arena Flowers
2018/02/10 全球购物
英国珠宝钟表和家居礼品精品店:David Shuttle
2018/02/24 全球购物
光信息科学与技术专业职业生涯规划
2014/03/13 职场文书
大学生自我鉴定书
2014/03/24 职场文书
银行纠风工作实施方案
2014/06/08 职场文书
2019年预备党员的思想汇报:加深对党的认知
2019/09/25 职场文书
如何利用Python实现n*n螺旋矩阵
2022/01/18 Python