GoF設計モード)Template Method Pattern
3103 ワード
意図する
オブジェクトの演算はアルゴリズムのスケルトンのみを定義し、各ステップの具体的な処理はサブクラスにプッシュされます.
工場の方法モデルとよく似ています.
動機。
例は、
使いやすさ
こうぞう
参加者
定義アルゴリズム処理段階において
コラボレーションメソッド
ConcreteClassはAbstractClassによってアルゴリズムの不変の処理ステップを実現する.
結果
インプリメンテーション
私の実際の実施
今日もPizzaの例を作ってみました.
AbstractPizzaClassを作りましたが、ピザの作り方はprepare、addTopping、add cheese、packageの4種類があります.
このうちaddToppingとadd Cheeseプロセスは,各分岐点が自分に見てもらいたいときにtemplate method Patternに依頼する.
AbstractPizzaClass
public abstract class AbstractPizzaClass {
// protected 선언이 일반적
protected abstract void doAddTopping();
protected abstract void doAddCheese();
private void preparePizza() {
System.out.println("Prepare Pizza");
}
private void packagingPizza() {
System.out.println("Packaging Pizza");
}
// Template Method. 큰 틀은 부모가 정해놓고, 세부 공정은 Concrete가 하도록 abstract class로 구현
public void templateMethod() {
preparePizza();
addTopping();
addCheese();
packagingPizza();
}
}
// 구체적인 행동(addTopping, addCheese 메소드만 정의하고 나머지는 부모에게 맡김)
public class SeoulPizzaClass extends AbstractPizzaClass {
@Override
protected void doAddTopping() {
System.out.println("add Seoul Pizza Topping");
}
@Override
protected void doAddCheese() {
System.out.println("add Seoul Cheese Topping");
}
}
総評
Reference
この問題について(GoF設計モード)Template Method Pattern), 我々は、より多くの情報をここで見つけました https://velog.io/@nisroeld/GoF-디자인패턴-Template-Method-Patternテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol