簡易設計モード——テンプレート方法モード


定義#テイギ#
操作中のアルゴリズムフレームワークを定義し、いくつかのステップをサブクラスに遅延します.サブクラスは、アルゴリズムの構造を変更することなく、アルゴリズムの特定のステップを再定義することができる.
いくつかのロール
  • 抽象テンプレートクラス
  • 具体テンプレート類
  • コード実装
    抽象テンプレートクラスjava
    public abstract class AbstractClass {
    
        //        
        protected abstract void dosomething();
        protected abstract void doanything();
    
        //      
        public void TemplateMethod(){
            //      
            this.doanything();
            this.dosomething();
        }
    }

    具体的なテンプレート類ConcreteClass 1.java
    public class ConcreteClass1  extends AbstractClass{
    
        @Override
        protected void dosomething() {
            //      
        }
    
        @Override
        protected void doanything() {
            //      
        }
    }

    具体的なテンプレート類ConcreteClass 2.java
    public class ConcreteClass2 extends AbstractClass {
        @Override
        protected void dosomething() {
            //      
        }
    
        @Override
        protected void doanything() {
            //      
        }
    }

    シーンクラスclient.java
    public class Client {
        public static void main(String args[]){
    
            ConcreteClass1 c1 = new ConcreteClass1();
            ConcreteClass2 c2 = new ConcreteClass2();
    
            //      
            c1.TemplateMethod();
            c2.TemplateMethod();
        }
    }

    テンプレートメソッドモードの利点
  • 不変の部分をカプセル化し、可変の部分を拡張する:不変のビジネスステップを親クラスにカプセル化し、変換する必要がある特定のビジネス変換をサブクラスに配置して実現する.
  • 共通部分のコードを抽出し、メンテナンスを容易にする:ステップを調整する必要がある場合は、親クラスで修正するだけでよく、すべてのサブクラスで修正する必要はありません.
  • 動作は親によって制御され、子によって実現される:基本的な方法は子によって実現されるため、子は拡張によって自分の個性的なカスタマイズを増やすことができる.

  • テンプレートメソッドモードの使用シーン
  • 複数のサブクラスに共通の方法があり、論理がほぼ同じ場合.
  • の重要で複雑なアルゴリズムと業務ステップはコアアルゴリズムに置かれ、周辺の機能はサブクラスに置かれて
  • を実現する.
  • 再構築時に、同じコードを抽出する.