JS常用的设计模式(2)——简单工厂模式
简单工厂模式是由一个方法来决定到底要创建哪个类的实例, 而这些实例经常都拥有相同的接口. 这种模式主要用在所实例化的类型在编译期并不能确定, 而是在执行期决定的情况。 说的通俗点,就像公司茶水间的饮料机,要咖啡还是牛奶取决于你按哪个按钮。
简单工厂模式在创建ajax对象的时候也非常有用.
这个库里提供了几种ajax请求的方式,包括xhr对象的get, post, 也包括跨域用的jsonp和iframe. 为了方便使用, 这几种方式都抽象到了同一个接口里面.
1 var request1 = Request('cgi.xx.com/xxx' , ''get');2 request1.start();3 request1.done( fn );4 var request2 = Request('cgi.xx.com/xxx' , ''jsonp' ); 5 request2.start();6 request2.done( fn );
Request实际上就是一个工厂方法, 至于到底是产生xhr的实例, 还是jsonp的实例. 是由后来的代码决定的。
实际上在js里面,所谓的构造函数也是一个简单工厂。只是批了一件new的衣服. 我们扒掉这件衣服看看里面。
通过这段代码, 在firefox, chrome等浏览器里,可以完美模拟new.
1 functionA( name ){2 this.name =name;3 }4 functionObjectFactory(){5 var obj ={},6 Constructor =Array.prototype.shift.call( arguments );7 obj.__proto__ = typeof Constructor .prototype === 'number' ?Object.prototype8 : Constructor .prototype;9 var ret =Constructor.apply( obj, arguments );10 return typeof ret === 'object' ?ret : obj;11 }12 var a = ObjectFactory( A, 'svenzeng');13 alert ( a.name ); //svenzeng
这段代码来自es5的new和构造器的相关说明, 可以看到,所谓的new, 本身只是一个对象的复制和改写过程, 而具体会生成什么是由调用ObjectFactory时传进去的参数所决定的。
转载于:https://www.cnblogs.com/jymz/p/4250535.html
JS常用的设计模式(2)——简单工厂模式相关推荐
- C#设计模式(2)——简单工厂模式
一.引言 这个系列也是自己对设计模式的一些学习笔记,希望对一些初学设计模式的人有所帮助的,在上一个专题中介绍了单例模式,在这个专题中继续为大家介绍一个比较容易理解的模式--简单工厂模式. 二.简单工厂 ...
- 工厂模式 java场景_研磨设计模式之简单工厂模式(场景问题)
简单工厂不是一个标准的设计模式,但是它实在是太常用了,简单而又神奇,所以还是需要好好掌握的,就当是对学习设计模式的热身运动吧.为了保持一致性,我们尽量按照学习其它模式的步骤来进行学习. 1 场景问题 ...
- php的类图怎么生成_PHP设计模式之简单工厂模式
PHP设计模式之简单工厂模式 先从简单工厂入门,不管是面试还是被他人面试,在问到设计模式的时候,大多数人都会提到工厂模式.毫无疑问,工厂相关的几种模式在设计模式中是最出名的也是应用比较广泛的一种模式. ...
- .NET设计模式(1): 简单工厂模式
.NET设计模式(1): 简单工厂模式 最近一直在看设计模式,想把自己的学习笔记与大家分享一下,如果能帮助大家的话,我会非常高兴,同时也欢迎大家指出里面的不足.园子里其实关于此类文章已经很多了,如果d ...
- 设计模式之简单工厂模式(C#版)
设计模式之简单工厂模式(C#版) 简介 假设有个女朋友 总结 简介 我用最简洁而直接的方式来描述一下,什么是简单工厂模式.一句话就是,工厂类使用switch case语句返回特定类型. 下面,我们用一 ...
- 大牧絮叨设计模式:简单工厂模式
文章目录 1. 简单工厂模式概述 1.1.简单工厂模式核心组件 1.2.简单工厂模式优缺点 2.` Java`实现 公共父类定义 产品具体实现类 简单工厂定义 代码运行测试: 3. `Python`实 ...
- 设计模式之简单工厂模式(Java 实现)
设计模式之简单工厂模式(Java 实现) 本文首发于http://www.imooc.com/wiki/Designlesson/factory.html 简单工厂模式是平时开发过程中最常见的设计模式 ...
- js原生设计模式——3简单工厂模式\简单工厂模式封装简单对象
1.Factory基本写法 <!DOCTYPE html> <html lang="en"> <head> <meta chars ...
- 『设计模式』简单工厂模式
23种设计模式+额外常用设计模式汇总 (持续更新) 简单工厂模式 简单工厂模式也被称为静态工厂模式;使用简单工厂模式可以将产品的"消费"和生产完全分开,客户端只需要知道自己需要什么 ...
最新文章
- java中Array和ArrayList区别
- android分辨率比例成像,像素不是唯一 决定成像效果你必知的真相
- 【英语学习】【Daily English】U11 Work L01 Would you like a tour of the office?
- php面向对象受保护,php面向对象二之封装,protected ,public,private权限管理
- 3dmax高版本转低版本插件_3dmax高版本和低版本中视口配置如何去阴影
- python在字符串结尾加反斜杠_Python原始字符串和尾部反斜杠
- visual studio设置背景颜色为眼睛保护色
- 基于银河麒麟 V10 系统安装和卸载 DM8 数据库
- python提取时长2s以内的单词音频的韵母基频,以及单词词长信息
- App陷阱防不胜防:欺骗误导用户下载App、欺骗误导用户提供个人信息
- 第三方App接入微信登录 解读 (微信开放平台)
- 【记录】oracle异常ORA-00205:????
- 互联网与信息安全 ——云计算及其安全
- QT开发环境的建立以及qte4.6.3、tislib1.4移植到博创star2410开发板
- 2D和3D版本的重力游戏
- 80c51单片机c语言库涵数,80C51单片机C语言应用.ppt
- matlab 小波功率谱,小波变换后的各频率分量的功率谱,
- 美图秀秀头像插件与七牛云结合
- 斐讯 K3C V32.1.45.267 V1.1官改升级操作
- C语言 | 用递归求n阶勒让德多项式
热门文章
- 原创-WINDOWS SERVER 2008 WEB服务器安装配置
- 通往奥格瑞玛的道路-二分+最短路
- 算法题---最长公共前缀
- 查看linux端口对应的进程id
- (4.28)for xml path 在合并拆分上的作用演示
- python基础入门--input标签、变量、数字类型、列表、字符串、字典、索引值、bool值、占位符格式输出...
- [转]设计模式六大原则[1]:单一职责原则
- 嘉汇舞台工程材料列表(全部自有设备)
- JavaScript学习笔记(三)--操作运算符
- panda 函数笔记(merge\DataFrame用法\DataFrame.plot)