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简单事件处理和with用法介绍
Sep 16 Javascript
jQuery 中$(this).index与$.each的使用指南
Nov 20 Javascript
js实现兼容IE、Firefox的图片缩放代码
Dec 08 Javascript
微信小程序 form组件详解
Oct 25 Javascript
工作中常用的js、jquery自定义扩展函数代码片段汇总
Dec 22 Javascript
jQuery实现的动态文字变化输出效果示例【附演示与demo源码下载】
Mar 24 jQuery
单行 JS 实现移动端金钱格式的输入规则
May 22 Javascript
用JavaScript做简易的购物车的代码示例
Oct 20 Javascript
详解如何在项目中使用jest测试react native组件
Feb 09 Javascript
javascript 构建模块化开发过程解析
Sep 11 Javascript
layui点击按钮页面会自动刷新的解决方案
Oct 25 Javascript
javascript使用canvas实现饼状图效果
Sep 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
PHP聊天室技术
2006/10/09 PHP
仿AS3实现PHP 事件机制实现代码
2011/01/27 PHP
PHP 5.3 下载时 VC9、VC6、Thread Safe、Non Thread Safe的区别分析
2011/03/28 PHP
PHP实现定时执行任务的方法
2014/10/05 PHP
PHP中类的继承和用法实例分析
2016/05/24 PHP
PHP两个n位的二进制整数相加问题的解决
2018/08/26 PHP
jQuery前台数据获取实现代码
2011/03/16 Javascript
Javascript/Jquery——简单定时器的多种实现方法
2013/07/03 Javascript
JavaScript中对象介绍
2014/12/31 Javascript
javascript实现列表切换效果
2016/05/02 Javascript
vue.js获得当前元素的文字信息方法
2018/03/09 Javascript
详解Vue中watch的详细用法
2018/11/28 Javascript
使用koa-log4管理nodeJs日志笔记的使用方法
2018/11/30 NodeJs
Vue实现渲染数据后控制滚动条位置(推荐)
2019/12/09 Javascript
微信小程序实现首页弹出广告
2020/12/03 Javascript
[47:46]完美世界DOTA2联赛 Magma vs GXR 第三场 11.07
2020/11/10 DOTA
[31:29]完美世界DOTA2联赛PWL S3 INK ICE vs Magma 第一场 12.20
2020/12/23 DOTA
Python实现SSH远程登陆,并执行命令的方法(分享)
2017/05/08 Python
Python3.4实现从HTTP代理网站批量获取代理并筛选的方法示例
2017/09/26 Python
Python cookbook(数据结构与算法)对切片命名清除索引的方法
2018/03/13 Python
Python计算开方、立方、圆周率,精确到小数点后任意位的方法
2018/07/17 Python
详解关于Django中ORM数据库迁移的配置
2018/10/08 Python
一百行python代码将图片转成字符画
2021/02/19 Python
浅谈keras 的抽象后端(from keras import backend as K)
2020/06/16 Python
python爬虫要用到的库总结
2020/07/28 Python
Scrapy-Redis之RedisSpider与RedisCrawlSpider详解
2020/11/18 Python
2021年值得向Python开发者推荐的VS Code扩展插件
2021/01/25 Python
ASOS亚洲:ASOS Asia
2018/03/04 全球购物
英国山地公路自行车商店:Tweeks Cycles
2018/03/16 全球购物
土木工程专业推荐信
2014/02/19 职场文书
《少年王勃》教学反思
2014/04/27 职场文书
售后客服工作职责
2014/06/16 职场文书
网球场地租赁协议范本
2014/10/07 职场文书
企业介绍信范文
2015/01/30 职场文书
golang 实现Location跳转方式
2021/05/02 Golang
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python