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 相关文章推荐
prototype与jquery下Ajax实现的差别
Sep 13 Javascript
通过Jquery.cookie.js实现展示浏览网页的历史记录超管用
Oct 23 Javascript
jquery实现移动端点击图片查看大图特效
Sep 11 Javascript
Vue.js 2.0 和 React、Augular等其他前端框架大比拼
Oct 08 Javascript
JS表格组件神器bootstrap table使用指南详解
Apr 12 Javascript
AngularJS集合数据遍历显示的实例
Dec 27 Javascript
vue-cli项目中使用公用的提示弹层tips或加载loading组件实例详解
May 28 Javascript
Node.js一行代码实现静态文件服务器的方法步骤
May 07 Javascript
如何在Angular8.0下使用ngx-translate进行国际化配置
Jul 24 Javascript
vue实现图片上传预览功能
Dec 23 Javascript
小程序Scroll-view上拉滚动刷新数据
Jun 21 Javascript
JavaScript Dom实现轮播图原理和实例
Feb 19 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
php 保留字列表
2012/10/04 PHP
使用php记录用户通过搜索引擎进网站的关键词
2014/02/13 PHP
PHP根据传入参数合并多个JS和CSS文件的简单实现
2014/06/13 PHP
PHP编写登录验证码功能 附调用方法
2016/05/19 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
PHP实现的AES双向加密解密功能示例【128位】
2018/09/03 PHP
PHP html_entity_decode()函数讲解
2019/02/25 PHP
jQuery 1.0.2
2006/10/11 Javascript
利用JS进行图片的切换即特效展示图片
2013/12/03 Javascript
js实现用户注册协议倒计时的方法
2015/01/21 Javascript
jQuery选择器源码解读(三):tokenize方法
2015/03/31 Javascript
JS获取月份最后天数、最大天数与某日周数的方法
2015/12/08 Javascript
javascript对象的相关操作小结
2016/05/16 Javascript
javascript中的try catch异常捕获机制用法分析
2016/12/14 Javascript
JS高级运动实例分析
2016/12/20 Javascript
jQuery源码分析之sizzle选择器详解
2017/02/13 Javascript
vue2.0实战之基础入门(1)
2017/03/27 Javascript
JavaScript实现实时更新系统时间的实例代码
2017/04/04 Javascript
微信小程序实现点击按钮移动view标签的位置功能示例【附demo源码下载】
2017/12/06 Javascript
React Native之prop-types进行属性确认详解
2017/12/19 Javascript
JavaScript体验异步更好的解决办法
2018/01/08 Javascript
微信小程序picker组件关于objectArray数据类型的绑定方法
2019/03/13 Javascript
js实现的在本地预览图片功能示例
2019/11/09 Javascript
python目录与文件名操作例子
2016/08/28 Python
Python编程实现控制cmd命令行显示颜色的方法示例
2017/08/14 Python
Python中list的交、并、差集获取方法示例
2019/08/01 Python
Python 实现自动导入缺失的库
2019/10/29 Python
python学习笔记之多进程
2020/08/06 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
解析HTML5中的新功能本地存储localStorage
2016/03/01 HTML / CSS
Sunglasses Shop英国:欧洲领先的太阳镜在线供应商之一
2018/09/19 全球购物
为什么要使用servlet
2016/01/17 面试题
校本教研活动总结
2014/07/01 职场文书
民主生活会发言材料
2014/10/20 职场文书
聊一聊python常用的编程模块
2021/05/14 Python