文档章节

工厂模式

林落雨
 林落雨
发布于 2017/04/25 17:59
字数 135
阅读 4
收藏 0
// 父构造函数
function CarMaker(){}

// 父构造函数的原型方法
CarMaker.prototype.drive = function(){
	return this.doors;
}


// 静态工厂方法
/**
 * @param  type 具体的汽车制造商
 */
CarMaker.factory = function(type){
	var constr = type,
		newcar;

	// 如果构造函数不存在则发生错误
	if(typeof CarMaker[constr] !== "function"){
		throw{
			name:"Error",
			message:constr
		}
	}

	// 原型继承父类,但仅继承一次
	if(typeof CarMaker[constr].prototype.drive != "function"){
		CarMaker[constr].prototype = new CarMaker();
	}

	// 创建一个新实例
	newcar = new CarMaker[constr]();

	return newcar;
}

// 定义特定的汽车制造商
CarMaker.Compact = function(){
	this.doors = 4;
}

CarMaker.SUV = function(){
	this.doors = 24;
}

 

© 著作权归作者所有

共有 人打赏支持
上一篇: 迭代器模式
下一篇: 单例模式
林落雨
粉丝 0
博文 13
码字总数 2308
作品 0
杭州
私信 提问

暂无文章

防止Tweak

什么是tweak? 英文意思为捏, 拧,扭,稍稍调整(机器、系统等)。 依据维基百科的定义,tweak指的是对电子系统进行轻微调整来增强其功能的工具;在ios中tweak特指那些能够增强其它可执行程...

HeroHY
22分钟前
0
0
linux中常用标识---不定期更新

LINUX常用标识符: 1 & && | || &: 表示进程在后台运行 例如 redis-server & 不是所有后台运行都是& 比如es ./bin/elasticsearch -d es后台运行&&: 第一个命令执行成功后 才执行后面的命令...

geek土拨鼠
今天
1
0
Mybatis 中$与#的区别,预防SQL注入

一直没注意Mybatis 中$与#的区别,当然也是更习惯使用#,没想到避免了SQL注入,但是由于要处理项目中安全渗透的问题,不可避免的又遇到了这个问题,特此记录一下。 首先是共同点: 在mybatis...

大雁南飞了
今天
0
0
Spring Clould负载均衡重要组件:Ribbon中重要类的用法

Ribbon是Spring Cloud Netflix全家桶中负责负载均衡的组件,它是一组类库的集合。通过Ribbon,程序员能在不涉及到具体实现细节的基础上“透明”地用到负载均衡,而不必在项目里过多地编写实现...

Ala6
今天
0
0
让 linux 删除能够进入回收站

可以参考这个贴子 https://blog.csdn.net/F8qG7f9YD02Pe/article/details/79543316 从那个git地址 把saferm.sh下载下来 把saferm.sh复制到 /usr/bin 目录下 在用~/目下 的.bashrc 下加一句这...

shzwork
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部