javascript設計モードのテンプレート方法モード

1779 ワード

テンプレートモード
定義:継承に基づいて、親クラスで実行するアルゴリズムを定義します.お茶を入れることとコーヒーを入れることはお茶を入れることとコーヒーを入れる過程の違いを比べます.
ステップでお茶を入れてコーヒーを入れます.1湯を沸かしてお湯を沸かします.2つのお茶を入れてコーヒーを入れます.3つのカップにカップを入れます.4つのレモンに砂糖を加えると、ステップ2と4だけの違いがはっきりと分かります.次の手で実現します.
 const Drinks = function(){}
   Drinks.prototype.firstStep=function(){
     console.log('   ')
   }
   Drinks.prototype.secondStep =function(){}
   Drinks.prototype.thirdStep = function(){
     console.log('    ')
   }
   Drinks.prototype.fourthStep = function(){}
   Drinks.prototype.init = function(){//        :          
   this.firstStep()
   this.secondStep()
   this.thirdStep()
   this.fourthStep()
   }
   const Tea=function(){}
   Tea.prototype=new Drinks
   Tea.prototype.secondStep = function(){
     console.log('    ')
   }
   Tea.prototype.fourthStep =function(){
     console.log('   ')
   }
  const Coffee =function(){}
  Coffee.prototype = new Drinks
  Coffee.prototype.secondStep = function(){
    console.log('    ')
  }
  Coffee.prototype.fourthStep = function(){
    console.log('  ')
  }
  const tea = new Tea()
  tea.init()
  //    
  //     
  //     
  //    
  const coffee =new Coffee()
  coffee.init()
  //    
  //     
  //     
  //   
かぎ
もしお客さんが薬味(砂糖、レモン)を入れたくないなら、どうすればいいですか?
 Drinks.prototype.ifNeedFlavour = function(){//    
    return true
  }
  Drinks.prototype.init = function(){
    //        :           
    this.firstStep()
    this.secondStep()
    this.thirdStep()
    if(this.ifNeedFlavour){//   true        
    this.fourthStep()

    }
  }
  const Coffee = function(){}
  Coffee.prototype = new Drinks()
  Coffee.prototype.ifNeedFlavour = function(){
    return window.confirm('       ')//          
  }