<dfn id="w48us"></dfn><ul id="w48us"></ul>
  • <ul id="w48us"></ul>
  • <del id="w48us"></del>
    <ul id="w48us"></ul>
  • javascript模式設(shè)計(jì)之工廠模式學(xué)習(xí)心得

    時(shí)間:2024-10-26 09:41:03 JavaScript 我要投稿
    • 相關(guān)推薦

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

      模式類型:工廠模式

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

      模式說明:常用模式之一,用來動(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={};

    【javascript模式設(shè)計(jì)之工廠模式學(xué)習(xí)心得】相關(guān)文章:

    常用的JavaScript模式09-22

    Java設(shè)計(jì)模式之模板方法模式10-29

    對(duì)javascript嚴(yán)格模式的理解08-18

    分析JavaScript函數(shù)的調(diào)用模式07-20

    javascript 單例模式詳解及簡單實(shí)例08-17

    企業(yè)薪酬設(shè)計(jì)基本模式及組合模式09-18

    薪酬管理之薪酬模式探究09-01

    動(dòng)畫設(shè)計(jì)的意圖模式07-06

    要設(shè)計(jì)不同的薪酬模式10-05

    Oracle歸檔模式的運(yùn)行模式08-05

    主站蜘蛛池模板: 国产成人精品日本亚洲网站| 四虎最新永久在线精品免费| 国内精品免费视频精选在线观看| 久久夜色撩人精品国产小说| 亚洲国产精品lv| 久久九九精品99国产精品| 婷婷久久精品国产| 精品欧美一区二区在线看片| 最新亚洲精品国自产在线观看| 国产伦精品免编号公布| 亚洲AV无码精品无码麻豆| 少妇亚洲免费精品| 久久国产精品偷99| 久久久久久亚洲精品无码| 国产天天综合永久精品日| 国产精品v欧美精品v日韩| 91精品国产成人网在线观看| 免费欧美精品a在线| 国产亚洲婷婷香蕉久久精品| 99国产欧美精品久久久蜜芽| 国产网红无码精品视频| 久久国产热精品波多野结衣AV| 亚洲国产精品一区二区第一页| 亚洲欧美日韩国产精品 | 国产精品内射视频免费| 日韩精品www| 亚洲日韩精品欧美一区二区| 亚洲第一精品在线视频| 国产成人精品亚洲精品| 国产精品日韩欧美久久综合 | 国产欧美日本亚洲精品一5| 国产2021久久精品| 国产精品推荐天天看天天爽| 国产精品欧美一区二区三区| 国产精品va久久久久久久| 国产精品亚洲一区二区在线观看| 国产精品二区观看| 国产综合精品久久亚洲 | 成人精品一区二区三区| 99免费精品国产| 国产一区二区精品久久凹凸|