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调试之DOM断点调试法使用技巧分享
Apr 15 Javascript
JQuery 控制内容长度超出规定长度显示省略号
May 23 Javascript
Vuejs第十二篇之动态组件全面解析
Sep 09 Javascript
JavaScript事件用法浅析
Oct 31 Javascript
iscroll动态加载数据完美解决方法
Jul 18 Javascript
JavaScript Date对象应用实例分享
Oct 30 Javascript
jQuery+CSS实现的table表格行列转置功能示例
Jan 08 jQuery
动态Axios的配置步骤详解
Jan 12 Javascript
小程序云开发实战小结
Oct 25 Javascript
json解析大全 双引号、键值对不在一起的情况
Dec 06 Javascript
npx create-react-app xxx创建项目报错的解决办法
Feb 17 Javascript
jQuery实现简单轮播图效果
Dec 27 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
PHP 获取目录下的图片并随机显示的代码
2009/12/28 PHP
php empty()与isset()区别的详细介绍
2013/06/17 PHP
举例详解JavaScript中Promise的使用
2015/06/24 Javascript
javascript中 try catch用法
2015/08/16 Javascript
js行号显示的文本框实现效果(兼容多种浏览器 )
2015/10/23 Javascript
angular.js分页代码的实例
2016/07/27 Javascript
JS克隆,属性,数组,对象,函数实例分析
2016/11/26 Javascript
JS与jQuery实现子窗口获取父窗口元素值的方法
2017/04/17 jQuery
Vue与Node.js通过socket.io通信的示例代码
2018/07/25 Javascript
JS散列表碰撞处理、开链法、HashTable散列示例
2019/02/08 Javascript
vue cli使用融云实现聊天功能的实例代码
2019/04/19 Javascript
javascript获取select值的方法完整实例
2019/06/20 Javascript
python网络爬虫之如何伪装逃过反爬虫程序的方法
2017/11/23 Python
tensorflow入门之训练简单的神经网络方法
2018/02/26 Python
对IPython交互模式下的退出方法详解
2019/02/16 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
利用Python校准本地时间的方法教程
2019/10/31 Python
Python字符串中删除特定字符的方法
2020/01/15 Python
python无序链表删除重复项的方法
2020/01/17 Python
解决Python import docx出错DLL load failed的问题
2020/02/13 Python
Python实现栈的方法详解【基于数组和单链表两种方法】
2020/02/22 Python
对django 2.x版本中models.ForeignKey()外键说明介绍
2020/03/30 Python
python实现一个猜拳游戏
2020/04/05 Python
如何基于python把文字图片写入word文档
2020/07/31 Python
Python在字符串中处理html和xml的方法
2020/07/31 Python
Pytorch生成随机数Tensor的方法汇总
2020/09/09 Python
html+css实现自定义图片上传按钮功能
2019/09/04 HTML / CSS
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
会话Bean的种类
2013/11/07 面试题
初中同学聚会感言
2014/02/11 职场文书
校外活动方案
2014/08/28 职场文书
2014年初一班主任工作总结
2014/11/08 职场文书
我的中国梦心得体会范文
2016/01/05 职场文书
《坐井观天》教学反思
2016/02/18 职场文书
使用golang编写一个并发工作队列
2021/05/08 Golang
virtualenv隔离Python环境的问题解析
2022/06/21 Python