[IT]/java
java.Design pattern.template
givemebro
2021. 3. 4. 14:32
반응형
Template Method Design Pattern
부모 클래스(상위 클래스)에서 작업처리의 흐름을 정의하고 자식 클래스에서 작업처리의 내용을 구체화하는 페턴
> SeaFoodPizzaService, PotatoPizzaService..많은 피자 종류가 있다.
피자 공정에서 토핑을 제외한 나머지 작업(도우를 만들다, 피자를 굽다, 자르다, 포장하다)은 공통된 작업이고 잡업처리의 흐름도 동일하다.[+(abstract)토핑]
부모 클래스에서 재사용 가능한 작업 기능 및 작업 처리의 흐름은 자식에게 제공하고 자식 클래스 차원에서만 구현할 수 있는 토핑 작업만 직접 구현하도록 한다.
package step4;
public abstract class PizzaService {
protected void prepare() {
System.out.println("도우를 만들다");
}
// 부모 차원에서 구현할 수 없는 구체적인 작업(토핑작업)은 자식 클래스에게 구현을 강제 함
protected abstract void topping();
protected void bake() {
System.out.println("굽다");
}
protected void cutting() {
System.out.println("자르다");
}
protected void boxing() {
System.out.println("포장하다");
}
/*
* Template method : 작업 처리를 정의하는 메서드
*/
public void makePizza() {
this.prepare();
this.topping();
this.bake();
this.cutting();
this.boxing();
}
}
package step4;
public class SeaFoodPizzaService extends PizzaService{
@Override
protected void topping() {
// TODO Auto-generated method stub
System.out.println("해산물 토핑");
}
}
package step4;
public class PotatoPizzaService extends PizzaService {
@Override
protected void topping() {
// TODO Auto-generated method stub
System.out.println("감자 토핑");
}
}
package step4;
public class TestTemplateMethodDesignPattern {
public static void main(String[] args) {
PizzaService serviceList[] = { new SeaFoodPizzaService(), new PotatoPizzaService() };
for (int i=0;i<serviceList.length;i++) {
serviceList[i].makePizza();
}
}
}
java.Design pattern
Design Pattern 소프트웨어 설계, 구현 단계에서 공통적으로 발생하는 문제에 대한 해결책
broscoding.tistory.com
java.abstract(추상화)
abstract abstract class : 상속을 위한 class > 직접 객체화 될 수 없다.(자식 클래스의 생성자에서 super()를 이용한 생성은 가능) > 여러 구체화된 자식 크래스의 공통적인 멤버를 추상화한 클래스 > abstrac
broscoding.tistory.com
반응형