作为创建性设计模式中的第一个介绍的,这个模式必然比较简单,所以不做过多介绍
简单工厂模式的概念就是创建对象,不仅如此,简单工厂模式还可以用来创建相似的对象。
举个例子来说,如果你想创建一些书,那么这些书都有一些相似的地方,比如目录、页码等。也有很多不同的地方, 如书名、出版时间、书的类型等,对于创建的对象相似的属性当然好处理,对于不同的属性就要有针对的修改处理了。
//工厂模式
function createBook(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/11/16','JS');
var book2 = createBook('css book','2017/11/13','CSS');
book1.getName();
book2.getName();
var Basketball = function() {
this.info='美国篮球'
}
Basketball.prototype = {
constructor:Basketball,
getMember:function() {
console.log('每队需要5个成员');
},
getBallSize:function() {
console.log('这个篮球还是很大的');
}
}
var Football = function() {
this.info = '这是足球'
}
Football.prototype = {
constructor:Football,
getMember:function() {
console.log('足球每队需要十一个人')
},
getBallSize:function() {
console.log('足球我不喜欢');
}
}
var Tennis = function() {
this.info = '网球貌似现在还是蛮流行的';
}
Tennis.prototype = {
constructor:Tennis,
getMember:function() {
console.log('一对一,二对二咯');
},
getBallSize:function() {
console.log('网球还是比较小的');
}
}
//球类工厂
var sportsFactory = function(name) {
switch (name){
case 'NBA':
return new Basketball();
break;
case 'wordCup':
return new Football();
break;
default :
return new Tennis();
}
}
这种简单工厂模式非常的像寄生式继承,只不过这里o没有继承任何对象和类。
简单工厂的用途就是创建对象,或者创建相似的对象。比较简单,比较常规,这里不再赘述