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面向对象之Javascript 继承
May 04 Javascript
一些常用且实用的原生JavaScript函数
Sep 08 Javascript
JS date对象的减法处理实现代码
Dec 28 Javascript
JavaScript高级程序设计 学习笔记 js高级技巧
Sep 20 Javascript
JQuery魔力之$(&quot;tagName&quot;)与selector
Mar 05 Javascript
struts2+jquery+json实现异步加载数据(自写)
Jun 24 Javascript
Jquery遍历checkbox获取选中项value值的方法
Feb 13 Javascript
JavaScript中通过提示框跳转页面的方法
Feb 14 Javascript
使用jQuery实现WordPress中的Ctrl+Enter和@评论回复
May 21 Javascript
JavaScript事件学习小结(三)js事件对象
Jun 09 Javascript
JS获得一个对象的所有属性和方法实例
Feb 21 Javascript
JavaScript中的&quot;=、==、===&quot;区别讲解
Jan 22 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
基于empty函数的判断详解
2013/06/17 PHP
destoon整合ucenter后注册页面不跳转的解决方法
2014/06/21 PHP
PHP基于curl post实现发送url及相关中文乱码问题解决方法
2017/11/25 PHP
javascript 自动转到命名锚记
2009/01/10 Javascript
基于Jquery的将DropDownlist的选中值赋给label的实现代码
2011/05/06 Javascript
在ASP.NET中使用JavaScript脚本的方法
2013/11/12 Javascript
jQuery中bind与live的用法及区别小结
2014/01/27 Javascript
Javascript快速排序算法详解
2014/12/03 Javascript
JS获取下拉框显示值和判断单选按钮的方法
2015/07/09 Javascript
JSON字符串转JSON对象
2015/07/31 Javascript
JS实现的在线调色板实例(附demo源码下载)
2016/03/01 Javascript
JavaScript使用readAsDataUrl方法预览图片
2017/05/10 Javascript
微信小程序实现image组件图片自适应宽度比例显示的方法
2018/01/16 Javascript
js序列化和反序列化的使用讲解
2019/01/19 Javascript
解析原来浏览器原生支持JS Base64编码解码
2019/08/12 Javascript
使用kbone解决Vue项目同时支持小程序问题
2019/11/08 Javascript
如何手动实现一个 JavaScript 模块执行器
2020/10/16 Javascript
python开发之tkinter实现图形随鼠标移动的方法
2015/11/11 Python
Python实现计算最小编辑距离
2016/03/17 Python
python并发编程之线程实例解析
2017/12/27 Python
用python写一个定时提醒程序的实现代码
2019/07/22 Python
Python Scrapy框架:通用爬虫之CrawlSpider用法简单示例
2020/04/11 Python
学习python需要有编程基础吗
2020/06/02 Python
CSS3教程(3):border-color网页边框色彩
2009/04/02 HTML / CSS
html5清空画布方法(三种)
2017/10/16 HTML / CSS
西班牙美妆电商:Perfume’s Club(有中文站)
2018/08/08 全球购物
Goodee官方商店:迷你投影仪
2021/03/15 全球购物
网络体系结构及协议的定义
2014/03/13 面试题
喝酒检查书范文
2014/02/23 职场文书
公司募捐倡议书
2014/05/14 职场文书
同志主要表现材料
2014/08/21 职场文书
观看《周恩来的四个昼夜》思想汇报
2014/09/12 职场文书
邹越演讲观后感
2015/06/15 职场文书
MySQL InnoDB ReplicaSet(副本集)简单介绍
2021/04/24 MySQL
HTML+JS实现在线朗读器
2022/02/15 Javascript
【DOTA2】当街暴打?PSG LGD vs VG - DPC 2022 WINTER TOUR CN
2022/04/02 DOTA