Springboot/テンプレートメソッドアレイ


コア機能と追加機能

  • キー機能:オブジェクトが提供するユニークな機能
  • 付加機能:コア機能を補助する機能.ログ追跡、トランザクション機能など...
  • テンプレートメソッドアレイ


    良いデザインは変わらない分離です
    コア機能が変わり、付加機能がかなり固定されています.この2つは別々にモジュール化しなければならない.
    この問題を解決するには、テンプレートメソッドモードを使用します.
    テンプレートメソッドの構造は,抽象テンプレートに論理を集中させ,サブクラスオーバーライドにより内部で絶えず変化する論理を組織する.
    すなわち,すべての不変の論理を抽象クライスに配置し,変化した論理は単独呼び出しによって解決されるモードである.
    public abstract class 추상클레스{
    
    public void ex(){
    부가기능코드~~
    
    핵심로직코드() //호출
    
    부가기능코드~~
    
    }
    
    protected abstract void 핵심로직코드();
    
    }
    上記の抽象クラスを継承し,コア論理コード()を上書きすればよい.
    これは、サブクラスを上書きすると上書きされた関数が実行されるためです.
    これで単一責任の原則を兼ねることができる.

    匿名の内部クラスの利用


    匿名の内部クラスを使用すると、オブジェクトインスタンスの作成時に同時に作成するクラスを継承するサブクラスを定義できます.

    良いデザインです。


    良いデザインには多くの定義がありますが、本当に良いデザインは変更が発生したときに自然に現れます.完全なプログラムセットを一度に作成することはできないので、変更しやすい設計は非常に良い設計です.
    単一責任の原則を守れば、変更が発生した場合、真の価値を発揮することができる.

    整理する


    親クラスでアルゴリズムスケルトンとしてのテンプレートを定義し、一部の変更論理は子クラスで定義されます.このようなクラスは,アルゴリズム全体の構造を変更することなく,特定の部分のみを再定義することができる.
    欠点!
    その欠点は,子クラスと親クラスがコンパイル時に強く結合していることである.
    サブクラスでは、親の機能ではなく、親のすべての重いスタンプロジックが含まれます.そのため、親の等級に強く依存します.
    つまり,親に何かが起こると,すべての子の影響を受けるため,欠点は明らかである.
    これらの欠点を解消する設計モデルが戦略モデルである.