JavaScript设计模式小抄集(持续更新)
前言
本文旨在记录JavaScript中常用的设计模式代码片段,简要说明使用场景,不过于追究细节。在设计模式开篇之前,还是先要搞清楚JavaScript中关于面向对象的基础知识,可以先看看JavaScript面向对象小抄集
JavaScript设计模式
简单工厂(Simple Factory)
简单工厂又叫做静态工厂方法( Static Factory Method ),由一个工厂对象决定创建某一种产品对象类的实例。主要用来创建同一类对象
- 类型:创建型 
- 适用场景: - 工厂类负责创建的对象比较少
- 客户只知道传入工厂类的参数,对于如何创建对象(逻辑)不关心
- 由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用
 
- 代码片段: - //方式一:new对象
 var Basketball = function(){
 this.content = "篮球";
 } Basketball.prototype.getBallSize(){
 console.log("直径20公分");
 } var Football = function(){
 this.content = "足球";
 } Football.prototype.getBallSize(){
 console.log("直径15公分");
 } //运动工厂
 var SportFactory = function(name){
 if (name == 'NBA') {
 return new Basketball();
 } else if (name == 'WorldCup') {
 return new Football();
 }
 } //方式二:创建一个新对象,然后包装增强属性和方法实现
 function createBall(name,content){
 //创建一个对象,然后扩展(这种方式又叫做寄生方式)
 var o = new Object();
 o.content = content;
 o.getContent = function(){
 return this.content;
 }
 //各个对象的差异部分
 if (name == 'NBA') { }
 else if (name == 'WorldCup') { }
 return o;
 }
 
参考
JavaScript设计模式小抄集(持续更新)的更多相关文章
- JavaScript面向对象小抄集
		前言 本文旨在记录JavaScript中面向对象的基础知识 搞明白JavaScript中的面向对象 一切都是对象 JavaScript中,除了基本类型外,其它类型都是对象类型 所谓对象就是若干属性的集 ... 
- DataStage 错误集(持续更新)
		DataStage 错误集(持续更新) DataStage序列文章 DataStage 一.安装 DataStage 二.InfoSphere Information Server进程的启动和停止 D ... 
- C#、Java中的一些小知识点总结(持续更新......)
		前言:在项目中,有时候一些小的知识,总是容易让人忽略,但是这些功能加在项目中往往十分的有用,因此笔者在这里总结项目中遇到的一些实用的小知识点,以备用,并持续更新...... 1.禁用DataGridV ... 
- JavaScript资源收集分享,持续更新中。。。
		平时收集的一些JavaScript资源,分享给大家 jQuery UI jEasyUI Extensions http://jqext.sinaapp.com 布局做的挺不错,有比较复杂的菜单导航.P ... 
- 基于Taro与typescript开发的网易云音乐小程序(持续更新)
		基于Taro与网易云音乐api开发,技术栈主要是:typescript+taro+taro-ui+redux,目前主要是着重小程序端的展示,主要也是借此项目强化下上述几个技术栈的使用,通过这个项目也可 ... 
- iOS 小知识点(持续更新)
		1.如何通过代码设置Button title的字体大小 设置Button.titleLabel.font = [UIFont systemFontOfSize:<#(CGFloat)#> ... 
- 安装 Ubuntu 21.04 后必备的绝佳应用大合集(持续更新中)
		@ 目录 一.Google Chrome 浏览器 1.下载 2.安装 3.设置搜索引擎 二.火焰截图(替代QQ截图) 1.简介: 2.安装: 3.设置快捷键: 三.VLC视频播放器(替代Potplay ... 
- javascript/jquery 常见功能实现(持续更新...)
		1. input 只能输入整数数字和字母 $(document).on('keyup','#no',function(){ var val = $.trim($(this).val()); if(va ... 
- jquery小技巧汇总 持续更新中
		1.jquery高亮当前选中菜单 $("document").ready(function(){ $(".menu li").click(function(){ ... 
随机推荐
- php chop()函数 语法
			php chop()函数 语法 chop()函数是什么意思? php chop函数是rtrim函数的别名,作用与rtrim函数是相同的,删除字符串右边的空格或其他预定义字符,语法是chop(strin ... 
- appium 安装
			1.npm安装: cmd——cnpm install -g appium 卸载: cmd——npm uninstall -g appium 2.下载安装包安装: Appium server: 1. A ... 
- PHP之GET和POST小结
			PHP之GET和POST小结 PHP $_GET 变量 $_GET 变量 预定义的 $_GET 变量用于收集来自 method="get" 的表单中的值. 从带有 GET 方法的表 ... 
- element table  通过selection-change选中的索引删除
			<el-table :row-class-name="tableRowClassName" @selection-change="handleSelectionCh ... 
- Apache JMeter
			https://en.wikipedia.org/wiki/Apache_JMeter Apache JMeter 是 Apache 的一个项目,它是一个负载测试工具可以用于进行各种服务器的性能测试分 ... 
- 查看IOS-app证书到期时间
			参照: iOS企业版证书到期 https://www.jianshu.com/p/44b0dc46ef37 如果不能十分确定每一个打出来的ipa的有效期(过期时间),而又需要关注它具体什么时候需要强制 ... 
- Eclipse Luna安装Hibernate Tools 4.2.3不显示,设置Eclipse运行的JDK
			Eclipse Luna安装Hibernate Tools 4.2.3不显示,设置Eclipse运行的JDK,有需要的朋友可以参考下. eclipse-jee-luna-SR2中安装Hibernate ... 
- 数论---lcm和gcd
			cd即最大公约数,lcm即最小公倍数. 首先给出a×b=gcd×lcm 证明:令gcd(a,b)=k,a=xk,b=yk,则a×b=xykk,而lcm=xyk,所以ab=gcd*lcm. 所以求lcm ... 
- LeetCode 求众数 II
			题目链接:https://leetcode-cn.com/problems/majority-element-ii/ 题目大意: 略. 分析: k个一起删, 最后check一下即可. 代码如下: #d ... 
- 正则表达式中(?:pattern)、(?=pattern)、(?!pattern)、(?<=pattern)和(?<!pattern)
			(?:pattern) ()表示捕获分组,()会把每个分组里的匹配的值保存起来,从左向右,以分组的左括号为标志,第一个出现的分组的组号为1,第二个为2,以此类推 (?:)表示非捕获分组,和捕获分组唯一 ... 
