[設計モード]テンプレートメソッドモード
テンプレートメソッドアレイ
プログラムを記述すると重複するコードが生成されます.重複を減らすために、テンプレートメソッドモードを使用できます.
テンプレートメソッドモードは、重複コードを最小化するために使用できます.親クラスに重複部分を配置し、子クラスに変更可能、変更可能な部分を含めます.
テンプレート方法UML図と特性
抽象クラスは、共通部分を定義するクラスです.Template methodと同様の一般的な方法は抽象クラスで定義される.
特定のクラスでは、元の操作と同じ変化部分を継承されたマルチステートとして処理できます.
テンプレートメソッドアレイの例
ピザを焼くプログラムを設計します.ピザを焼くにはオーブンが必要で、ピザはいろいろな種類に広がります.
class oven{
private ovenstate state;
public oven(){
state = ovenstate.ready;
}
public void bake(){
system.out.println("baking");
}
}
ピザ類は抽象類として使用されるオーブンを初期化するジェネレータを有する.Makebandとputinoven法はすべてのピザに適しているので,テンプレート法で実現した.ピザの種類によって変化する成分をサブクラスで定義する.例のpiperoni pizzaクラスでは、原料から定義されます.Pizzaクラスのputinovenはコンポーネントを呼び出し,多態性に応じてpizzaのコードを実行する.
class pizza{
private oven o;
public pizza(oven o ){
this.o = o ;
}
public void makedough(){
system.out.println("making dough");
}
public void putinoven(){
ingredients();
o.bake();
}
//primitive operation
protected void ingredients();
}
class pepperoni_pizza extends pizza{
public peperoni_pizza(oven o){
super(o);
}
protected void ingredients(){
system.out.println("pepperoni ingredients ready");
}
}
Reference
この問題について([設計モード]テンプレートメソッドモード), 我々は、より多くの情報をここで見つけました https://velog.io/@secdoc/디자인패턴-템플릿-메소드-패턴テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol