简单工厂模式
又称静态工厂方法,由一个工厂对象决定创建,某一种产品对象类的实例,主要用来创建同一类对象。
例子一
比如创建一些书,这些书有公共的属性,比如目录,页码等,也有一些不同的属性,比如出版日期,作者等等,所以对于不同的属性进行针对性处理,比如将不同属性作为参数传递进来
function createBook(name, time, type) {
// 创建一个对象,并对对象拓展属性和方法
var obj = new Object();
obj.name = name;
obj.time = time;
obj.type = type;
obj.getName = function () {
console.log(this.name);
}
return obj;
}
var b1 = createBook("js book", 2014, "js");
var b2 = createBook("css book", 2012, "css");
b1.getName();
b2.getName();
通过创建一个新对象然后包装增强其属性和功能来实现。如果这些类继承同一父类,但是创建的对象是一个新的个体,所以此时的方法或者属性是不能公用的。
例子二
var BasketBall = function () {
this.name = "篮球";
}
BasketBall.prototype = {
getMemeber: function() {
console.log("需要五名队员");
},
getBallSize: function() {w
console.log("很大");
}
}
var FootBall = function () {
this.name = "足球";
}
FootBall.prototype = {
getMemeber: function() {
console.log("需要11名队员");
},
getBallSize: function() {
console.log("也很大");
}
}
// 运动工厂
var sportsFactory = function(name) {
switch(name) {
case 'NBA':
return new BasketBall();
case 'wordCup':
return new FootBall();
}
}
// 创建需要的球类
var basketbBall = sportsFactory('wordCup');
这种通过类的实例化对象创建。如果这些类继承同一父类,那么他们父类上的原型方法是可以公用的