- 相關(guān)推薦
javascript模式設計之工廠(chǎng)模式學(xué)習心得
模式類(lèi)型:工廠(chǎng)模式
模式說(shuō)明:常用模式之一,用來(lái)動(dòng)態(tài)創(chuàng )建對象
適用范圍:在運行期間需要在一系列可互換的子類(lèi)中進(jìn)行選擇的類(lèi)
注意事項:接口的實(shí)現,從而使不同子類(lèi)可以被同等的對待,恰當的使用工廠(chǎng)模式,但不要拘泥與形式,理解本質(zhì)。
關(guān)鍵點(diǎn):以 函數/類(lèi)/子類(lèi) 構建的選擇器
本質(zhì):函數作為選擇器的使用
一般使用形式:
作為獨立的選擇器存在:
復制代碼 代碼如下:
function FactoryMode(index){
switch(index){
case "index1" :
return new Class1();break;
case "index2":
return new Class2();break;
case "index3":
return new Class3();break;
default:return new ClassComm();break;
}
}
或作為類(lèi)的一個(gè)方法存在:
復制代碼 代碼如下:
var MainClass=function(){};//主類(lèi)構造器
MainClass.prototype={
FactoryMode:function(){}//子類(lèi)選擇器
}
又或隱式選擇,即不以使用者的主觀(guān)選擇而選擇:
復制代碼 代碼如下:
var xmlRequest=function(){
if(this.isOffOnline()){
xhr= new OfflineHandler();
}//如果此時(shí)網(wǎng)絡(luò )不可用,創(chuàng )建可緩存AJAX對象
else if(this.isHightLatency()){
xhr= new QueuedHandler();
}//如果網(wǎng)絡(luò )延遲較大,創(chuàng )建隊列形式AJAX對象
else {
xhr=new SimpleHandler();
}//如果網(wǎng)絡(luò )正常,創(chuàng )建簡(jiǎn)單AJAX對象
interface.ensureImplements(xhr,AjaxHandler);
//檢查對象是否實(shí)現了接口,從而確保以后的工作可以順利進(jìn)行
return xhr;
}
延伸:
工廠(chǎng)模式的本質(zhì)就是選擇器的應用,選擇器不僅可作為對象的選擇,還可作為函數的選擇,類(lèi)的選擇,參數的選擇
函數的選擇,如:
復制代碼 代碼如下:
var addEvent=(function(){
if(!-[0,]){
return function(elem,type,handler){
elem[type+handler.toString()]=handler;
elem.attachEvent("on"+type,elem[type+handler.toString]);
}}//if IE
else {
return function(elem,type,handler){
elem.addEventListener(type,handler,false);
}
}
})();//避免多次判斷
類(lèi)的選擇:
復制代碼 代碼如下:
var suitableClass=function(){
if(match condition A) return Class1;
else if(match condition B) return Class2;
else return ClassComm;
}
參數的選擇:
復制代碼 代碼如下:
function Country(country){
if(country=="China")
this.config={};//設置基本參數1
else if(contry=="America")
this.config={};//設置參數2
else if()
.......//等等
}
Country.prototype={};
【javascript模式設計之工廠(chǎng)模式學(xué)習心得】相關(guān)文章:
常用的JavaScript模式09-22
Java設計模式之模板方法模式10-29
對javascript嚴格模式的理解08-18
分析JavaScript函數的調用模式07-20
javascript 單例模式詳解及簡(jiǎn)單實(shí)例08-17
企業(yè)薪酬設計基本模式及組合模式09-18
薪酬管理之薪酬模式探究09-01
動(dòng)畫(huà)設計的意圖模式07-06
要設計不同的薪酬模式10-05
Oracle歸檔模式的運行模式08-05