欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

javascript 模式設(shè)計(jì)之工廠模式學(xué)習(xí)心得

 更新時(shí)間:2010年04月27日 14:24:33   作者:  
接口的實(shí)現(xiàn),從而使不同子類可以被同等的對(duì)待,恰當(dāng)?shù)氖褂霉S模式,但不要拘泥與形式,理解本質(zhì)。
模式類型:工廠模式

模式說明:常用模式之一,用來動(dòng)態(tài)創(chuàng)建對(duì)象

適用范圍:在運(yùn)行期間需要在一系列可互換的子類中進(jìn)行選擇的類

注意事項(xiàng):接口的實(shí)現(xiàn),從而使不同子類可以被同等的對(duì)待,恰當(dāng)?shù)氖褂霉S模式,但不要拘泥與形式,理解本質(zhì)。

關(guān)鍵點(diǎn):以 函數(shù)/類/子類 構(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;
}
}

或作為類的一個(gè)方法存在:

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

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

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

復(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)建簡單AJAX對(duì)象
interface.ensureImplements(xhr,AjaxHandler);
//檢查對(duì)象是否實(shí)現(xiàn)了接口,從而確保以后的工作可以順利進(jìn)行
return xhr;
}

延伸:

工廠模式的本質(zhì)就是選擇器的應(yīng)用,選擇器不僅可作為對(duì)象的選擇,還可作為函數(shù)的選擇,類的選擇,參數(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);
}
}
})();//避免多次判斷

類的選擇:

復(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)文章

  • JavaScript 三種創(chuàng)建對(duì)象的方法

    JavaScript 三種創(chuàng)建對(duì)象的方法

    JavaScript中對(duì)象的創(chuàng)建有以下幾種方式 使用內(nèi)置對(duì)象 使用JSON符號(hào) 自定義對(duì)象構(gòu)造。大家可以參考下。
    2009-10-10
  • 收集的幾個(gè)不錯(cuò)的javascript類小例子

    收集的幾個(gè)不錯(cuò)的javascript類小例子

    自己比較喜歡javascript類,主要是方便擴(kuò)展。
    2007-12-12
  • 最簡單的javascript對(duì)象實(shí)例代碼

    最簡單的javascript對(duì)象實(shí)例代碼

    非常簡單的js面向?qū)ο髮?shí)例代碼,主要是利用了this,對(duì)于js面向?qū)ο蟮膶W(xué)習(xí)資料,可以查看腳本之家以前的文章。
    2009-12-12
  • javascript 面向?qū)ο缶幊袒A(chǔ) 多態(tài)

    javascript 面向?qū)ο缶幊袒A(chǔ) 多態(tài)

    javascript 面向?qū)ο缶幊袒A(chǔ) 多態(tài) 的實(shí)現(xiàn)方法說明,大家可以看下下面的代碼。
    2009-08-08
  • Javascript面向?qū)ο髷U(kuò)展庫代碼分享

    Javascript面向?qū)ο髷U(kuò)展庫代碼分享

    最近一直在用js做項(xiàng)目,遇到了許多需要應(yīng)用面向?qū)ο髞碓O(shè)計(jì)的功能,由于js對(duì)OOP的原生支持還不是很完善,所以就寫了一個(gè)面向?qū)ο蟮臄U(kuò)展庫用做底層支持,現(xiàn)在把它單獨(dú)整理出來,完善了一些功能,在這里分享一下
    2012-03-03
  • javascript 面向?qū)ο缶幊? function是方法(函數(shù))

    javascript 面向?qū)ο缶幊? function是方法(函數(shù))

    在進(jìn)行編程時(shí),必免不了要碰到復(fù)雜的功能。初學(xué)者最怕復(fù)雜的功能,因?yàn)椴荒軌蚝芎玫倪M(jìn)行功能邊界劃分,只能一大串if、循環(huán)加case堆疊在一起,結(jié)果出來的程序自己看著暈,別人看著更暈。
    2009-09-09
  • CLASS_CONFUSION JS混淆 全源碼

    CLASS_CONFUSION JS混淆 全源碼

    這里通過JS字符串替換、隨機(jī)數(shù)運(yùn)算實(shí)現(xiàn)混淆JS代碼,達(dá)到降低代碼可讀性,以保護(hù)代碼的目的,需要的朋友可以參考一下
    2007-12-12
  • JS類定義原型方法的兩種實(shí)現(xiàn)的區(qū)別評(píng)論很多

    JS類定義原型方法的兩種實(shí)現(xiàn)的區(qū)別評(píng)論很多

    JS類定義原型方法的兩種實(shí)現(xiàn)的區(qū)別評(píng)論很多...
    2007-09-09
  • JS繼承 筆記

    JS繼承 筆記

    JavaScript中沒有類的概念,與類相關(guān)的繼承的概念更是無從談起,但是我們可以通過特殊的語法來模擬面向?qū)ο笳Z言中的繼承。
    2011-07-07
  • Javascript 類與靜態(tài)類的實(shí)現(xiàn)(續(xù))

    Javascript 類與靜態(tài)類的實(shí)現(xiàn)(續(xù))

    由于MM的事件已干完,接著我們的靜態(tài)類的實(shí)現(xiàn)。這東西在Javascript里用得會(huì)非常的頻繁,因?yàn)獒槍?duì)現(xiàn)在的網(wǎng)頁,多個(gè)基于同一個(gè)類對(duì)象的頁面不多,往往不同塊對(duì)象的交互就可以解決問題了,這就需要在JS針對(duì)元素定義幾個(gè)靜態(tài)類就可以完事了,進(jìn)入正題。
    2010-04-04

最新評(píng)論