반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

bro's coding

java.Design pattern.template 본문

[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

 

반응형

'[IT] > java' 카테고리의 다른 글

java.Interface.default/static method  (0) 2021.03.05
java.class.layout  (0) 2021.03.05
java.Prepare.Interview  (0) 2021.03.05
java.Interface  (0) 2021.03.04
java.Design pattern  (0) 2021.03.04
java.abstract(추상화)  (0) 2021.03.04
java.final  (0) 2021.03.04
java.static(정적)  (0) 2021.03.04
Comments