JavaScript设计模式———简单工厂模式

简单工厂模式(Simple Factory),又叫静态工厂方法,由一个工厂对象来决定创建某一种产品对象类的实例,主要用来创建同一类对象

实际案例:
比如你去水果店购买各种水果

优点:

  1. 类型之间的解耦

缺点:

  1. 增加了与产品类平行的工厂类,也会增加很多额外的代码。
  2. 当需要增加子类的时候,需要修改工厂类,违背了开放-封闭原则 。

例子一(通过类实例化对象创建):

//比如说一个水果店,里面有很多种类的水果
 
//苹果基类
var Apple = function() {
	this.descr = '苹果有“智慧果”、“记忆果”的美称';
}
 
Apple.prototype = {
	getPrice : function() {
        console.log('10元一斤');
	},
	getArea : function() {
		console.log('源产地美国')
	}
}
 
 
//梨基类
var Pear = function() {
	this.descr = ' 梨是最常见的水果之一,秋天吃梨有润肺除燥的功效'
}
Pear.prototype = {
	getPrice : function() {
        console.log('8元一斤');
	},
	getArea : function() {
		console.log('源产地华北地区')
	}
}
//草莓基类
var Strawberry = function() {
	this.descr = ' 常吃草莓不仅能有效防止健康细胞发生癌变,还可以降低患乳腺癌、结肠癌、前列腺癌的风险'
}
Strawberry.prototype = {
	getPrice : function() {
        console.log('20元一斤');
	},
	getArea : function() {
		console.log('源产地亚热带地区')
	}
}
//水果店
var fruitShop = function(name) {
	switch(name) {
		case 'A':
		  return new Apple();
		case 'P':
		  return new Pear();
		case 'S':
		  return new Strawberry()
	}
}
 
var apple = fruitShop('A');

例子一(创建一个新对象然后包装增强其属性和功能):

//创建一本书
function cearteBook(name,time,type) {
	var o = new Object();
	o.name = name;
	o.time = time;
	o.type = type;
	o.getName = function() {
		console.log(this.name);
	}
	return o;
}
 
var book1 = createBook('js book',2017,'js');
var boo2 = createBook('css book',2017,'css');
 
book1.getName();
book2.getName();

这两个例子创建简单工厂模式有区别,第一种是通过类实例化对象创建的,第二种是创建一个新对象然后包装增强其属性和功能来实现的。

总结
简单工厂模式:用于把作用相似的一系列类和模块进行封装,根据需求返回开发者想要的基类实例。
简单工厂模式的使用场合,限制在创建单一对象时。
通过简单工厂模式来创建一些对象,可以让这些对象共用一些资源,而又能拥有一些私有资源。

posted @ 2022-08-19 10:14  CD、小月  阅读(7)  评论(0编辑  收藏  举报  来源