Springboot/テンプレートメソッドアレイ
1202 ワード
コア機能と追加機能
テンプレートメソッドアレイ
良いデザインは変わらない分離です
コア機能が変わり、付加機能がかなり固定されています.この2つは別々にモジュール化しなければならない.
この問題を解決するには、テンプレートメソッドモードを使用します.
テンプレートメソッドの構造は,抽象テンプレートに論理を集中させ,サブクラスオーバーライドにより内部で絶えず変化する論理を組織する.
すなわち,すべての不変の論理を抽象クライスに配置し,変化した論理は単独呼び出しによって解決されるモードである.
public abstract class 추상클레스{
public void ex(){
부가기능코드~~
핵심로직코드() //호출
부가기능코드~~
}
protected abstract void 핵심로직코드();
}
上記の抽象クラスを継承し,コア論理コード()を上書きすればよい.これは、サブクラスを上書きすると上書きされた関数が実行されるためです.
これで単一責任の原則を兼ねることができる.
匿名の内部クラスの利用
匿名の内部クラスを使用すると、オブジェクトインスタンスの作成時に同時に作成するクラスを継承するサブクラスを定義できます.
良いデザインです。
良いデザインには多くの定義がありますが、本当に良いデザインは変更が発生したときに自然に現れます.完全なプログラムセットを一度に作成することはできないので、変更しやすい設計は非常に良い設計です.
単一責任の原則を守れば、変更が発生した場合、真の価値を発揮することができる.
整理する
親クラスでアルゴリズムスケルトンとしてのテンプレートを定義し、一部の変更論理は子クラスで定義されます.このようなクラスは,アルゴリズム全体の構造を変更することなく,特定の部分のみを再定義することができる.
欠点!
その欠点は,子クラスと親クラスがコンパイル時に強く結合していることである.
サブクラスでは、親の機能ではなく、親のすべての重いスタンプロジックが含まれます.そのため、親の等級に強く依存します.
つまり,親に何かが起こると,すべての子の影響を受けるため,欠点は明らかである.
これらの欠点を解消する設計モデルが戦略モデルである.
Reference
この問題について(Springboot/テンプレートメソッドアレイ), 我々は、より多くの情報をここで見つけました
https://velog.io/@fj2008/Springboot탬플릿-메서드-패턴
テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol
Reference
この問題について(Springboot/テンプレートメソッドアレイ), 我々は、より多くの情報をここで見つけました https://velog.io/@fj2008/Springboot탬플릿-메서드-패턴テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol