本文摘自 《JavaScript 設(shè)計(jì)模式》張容銘 著 版權(quán)歸原作者所有
第3章 簡(jiǎn)單工廠模式
// 籃球基數(shù)
var Basketball = function(){
this.intro = '籃球盛行于美國(guó)'
}
Basketball.prototype = {
getMember : function(){
console.log('每個(gè)隊(duì)伍需要5名隊(duì)員');
},
getBallSize : function(){
console.log('籃球很大')
}
}
// 足球基類
var Football = function(){
this.intro = '足球在世界范圍內(nèi)很流行';
}
Football.prototype = {
getMember : function(){
console.log('每個(gè)隊(duì)伍需要11名隊(duì)員');
},
getBallSize : function(){
console.log('足球很大')
}
}
// 網(wǎng)球基類
var Tennis = function(){
this.intro = '每年有很多網(wǎng)球系列賽';
}
Tennis..prototype = {
getMember : function(){
console.log('每個(gè)隊(duì)伍需要1名隊(duì)員');
},
getBallSize : function(){
console.log('網(wǎng)球很小')
}
}
// 運(yùn)動(dòng)工廠
var SportsFactory = function(name){
switch(name){
case 'NBA':
return new Basketball();
case 'wordCup':
return new Football();
case 'FrenchOpen':
return new Tennis();
}
}
var foot = SportsFactory('wordCup');
console.log(foot);
console.log(foot.intro);
console.log(foot.getMember())
一個(gè)對(duì)象有時(shí)也可代替許多類
function createBook(name,time,type){
// 創(chuàng)建一個(gè)對(duì)象,并對(duì)對(duì)象拓展屬性和方法
var o = new Object();
o.name = name;
o.time = time;
o.type = type;
o.getName = function(){
console.log(this.name);
}
return o;// 將對(duì)象返回
}
var book1 = createBook('js book','2014','js');
var book2 = createBook('css book','2013','css');
book1.getName();
book2.getName();
function createPop(type,text){
// 創(chuàng)建一個(gè)對(duì)象,并對(duì)對(duì)象拓展屬性和方法
var o = new Object();
o.content = text;
o.show = function(){
// 顯示方法
}
if(type == 'alert'){
// 警示框差異部分
}
if(type == 'prompt'){
// 提示框差異部分
}
return o;
}
var userNameAlert = createPop('alert','用戶名只能是26個(gè)字母')