// 篮球基类
let Basketball=function(){
this.intro="唱跳rap篮球"
}
Basketball.prototype={
getMember:function(){
console.log("每个队伍需要5名队员")
},
getBallsize:function(){
console.log("篮球大")
}
}
// 足球基类
let Football=function(){
this.intro="足球在世界范围很流行"
}
Football.prototype={
getMember:function(){
console.log("每队伍需要11名队员")
},
getBallsize:function(){
console.log("足球很大")
}
}
// 网球基类
let Tennis=function(){
this.intro="每年有很多网球系列赛"
}
Tennis.prototype={
getMember:function(){
console.log("每个队伍需要1名队员")
},
getBallsize:function(){
console.log("网球很小")
}
}
// 运动工厂
let sportsFactory=function(name){
switch(name){
case "NBA" :
return new Basketball();
case "wordcup" :
return new Football();
case "Frenchopen" :
return new Tennis();
}
}
简单工厂模式的理念是创建对象,上面的的方式是对不同的类实例化,不过除此之外简单工厂还可以创建相似的对象。将相似的东西进行提取,不相似的针对处理即可。
举个例子,创建一些书,这些书有一些相似的地方,比如目录、页码等。也有一下不相似的地方,如书名、出版时间、书的类型等等。对于创建的对象相似的属性好处理,对于不同的属性就要针对性的进行处理了,比如我们将不同的属性作为参数传递进行处理
//工厂模式
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", 2014, "js");
var book2 = createBook("css book", 2013, "css");
book1.getName();
book2.getName();
//工厂模式
function createPop(type, text){
// 创建—个对象,并对对象拓展属性和方法
var o = new object();
o.content = text;
o.show = function(){
// 显示方法
};
if(type == 'alert'){
// 警示框差异部分
}
if(type == 'prompt'){
// 提示框差异部分
}
if(type == 'confirm'){
// 确认框差异部分
}
// 将对象返回
return o;
}
// 创建警示框
var userNameAlert = createPop('alert', '用户名只能是26个字母和数字');