最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

javascript 模式設(shè)計(jì)之工廠模式詳細(xì)說(shuō)明

 更新時(shí)間:2010年05月10日 11:52:56   作者:  
javascript 模式設(shè)計(jì)之工廠模式詳細(xì)說(shuō)明
模式類(lèi)型:工廠模式
模式說(shuō)明:常用模式之一,用來(lái)動(dòng)態(tài)創(chuàng)建對(duì)象
適用范圍:在運(yùn)行期間需要在一系列可互換的子類(lèi)中進(jìn)行選擇的類(lèi)
注意事項(xiàng):接口的實(shí)現(xiàn),從而使不同子類(lèi)可以被同等的對(duì)待,恰當(dāng)?shù)氖褂霉S模式,但不要拘泥與形式,理解本質(zhì)。
關(guān)鍵點(diǎn):以 函數(shù)/類(lèi)/子類(lèi) 構(gòu)建的選擇器
本質(zhì):函數(shù)作為選擇器的使用
一般使用形式:
作為獨(dú)立的選擇器存在:
復(fù)制代碼 代碼如下:

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è)方法存在:
復(fù)制代碼 代碼如下:

var MainClass=function(){};//主類(lèi)構(gòu)造器
MainClass.prototype={
FactoryMode:function(){}//子類(lèi)選擇器
}

又或隱式選擇,即不以使用者的主觀選擇而選擇:

復(fù)制代碼 代碼如下:

var xmlRequest=function(){
if(this.isOffOnline()){
xhr= new OfflineHandler();
}//如果此時(shí)網(wǎng)絡(luò)不可用,創(chuàng)建可緩存AJAX對(duì)象
else if(this.isHightLatency()){
xhr= new QueuedHandler();
}//如果網(wǎng)絡(luò)延遲較大,創(chuàng)建隊(duì)列形式AJAX對(duì)象
else {
xhr=new SimpleHandler();
}//如果網(wǎng)絡(luò)正常,創(chuàng)建簡(jiǎn)單AJAX對(duì)象
interface.ensureImplements(xhr,AjaxHandler);
//檢查對(duì)象是否實(shí)現(xiàn)了接口,從而確保以后的工作可以順利進(jìn)行
return xhr;
}

延伸:

工廠模式的本質(zhì)就是選擇器的應(yīng)用,選擇器不僅可作為對(duì)象的選擇,還可作為函數(shù)的選擇,類(lèi)的選擇,參數(shù)的選擇
函數(shù)的選擇,如:
復(fù)制代碼 代碼如下:

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)的選擇:

復(fù)制代碼 代碼如下:

var suitableClass=function(){
if(match condition A) return Class1;
else if(match condition B) return Class2;
else return ClassComm;
}

參數(shù)的選擇:

復(fù)制代碼 代碼如下:

function Country(country){
if(country=="China")
this.config={};//設(shè)置基本參數(shù)1
else if(contry=="America")
this.config={};//設(shè)置參數(shù)2
else if()
.......//等等
}
Country.prototype={};

相關(guān)文章

最新評(píng)論

宣威市| 潜江市| 九江县| 开平市| 虹口区| 辽宁省| 怀安县| 华容县| 韶关市| 凤凰县| 开封市| 阿克苏市| 凌源市| 比如县| 延安市| 来凤县| 吉隆县| 盐边县| 合肥市| 河北省| 砀山县| 堆龙德庆县| 永泰县| 会宁县| 修水县| 吉水县| 青神县| 余江县| 娱乐| 扶余县| 铅山县| 桂平市| 麦盖提县| 溧阳市| 四川省| 黄陵县| 马公市| 乌苏市| 双桥区| 九江市| 农安县|