『テンプレートモード』

10910 ワード

テンプレートモード

  • 1.テンプレートモード紹介
  • 2.コード実装の
  • 1.テンプレートパターンの紹介

  • は固定結合アルゴリズムスケルトンを定義し、いくつかのアルゴリズムをサブクラス実装
  • に遅延する.
  • 解決:複数のクラスのいずれかの方法は、論理が同じで、一部の実装が異なるだけで、大量の重複コードが現れた.
  • 使用シーン:複数のサブクラス共有メソッドがあり、論理が同じ
  • 特徴:一般的なテンプレート方法にfinalを加えて悪意のある書き換えを防止する
  • 2.コード実現

  • 新規豆乳抽象類、模擬豆乳製作過程
  • public abstract class SoyaBeanMilk {
        public final void make(){
          materialSelection();
          if (supportAddSeasoning())
              addSeasoning();
          invasion();
          grind();
        }
    
        protected void materialSelection(){
            System.out.println("  ....");
        }
        //    ,     
        protected abstract void addSeasoning();
        protected void invasion(){
            System.out.println("  ....");
        }
        protected void grind(){
            System.out.println("  ....");
        }
        //          ,      addSeasoning  
        //  
        protected boolean supportAddSeasoning(){
            return true;
        }
    }
    
  • 小豆豆乳類を新築し、添加補助材料の書き換え方法
  • public class RedSoyaBeanMilk extends SoyaBeanMilk{
        @Override
        protected void addSeasoning() {
            System.out.println("    ....");
        }
    }
    
  • 純豆乳類を新築し、添加せず、補助材料の添加方法を書き換え、false
  • に戻る.
    public class PureSoyaBeanMilk extends SoyaBeanMilk{
        @Override
        protected void addSeasoning() {
            //   
        }
        @Override
        protected boolean supportAddSeasoning() {
            return false;
        }
    }
    
    
  • 新規テンプレート設計モード試験クラス
  • public class TemplateTest {
        public static void main(String[] args) {
            //    
            SoyaBeanMilk redSoyaBeanMilk  = new RedSoyaBeanMilk();
            redSoyaBeanMilk.make();
    
            System.out.println("============================");
            //   ,   
            SoyaBeanMilk pureSoyaBeanMilk = new PureSoyaBeanMilk();
            pureSoyaBeanMilk.make();
        }
    }
    
    
  • 運転結果
  • 	  ....
    	    ....
    	  ....
    	  ....
    	============================
    	  ....
    	  ....
    	  ....