Design Architecture/Design Pattern 예제

Template Method 예제

lipnus 2021. 9. 28. 20:31
반응형
public class Main {
    public static void main(String[] args) {
        Beberage coffee = new Coffee();
        coffee.prepareRecipe();
    }
}


public abstract class Beberage {
    
    final void prepareRecipe() {
        boilWater();
        brew();
        pourInCup();
        addCondiments();
    }

    public void boilWater() {
        System.out.println("물끓임");
    }

    abstract void brew();

    public void pourInCup() {
        System.out.println("컵에따름");
    }

    abstract void addCondiments();
}


public class Coffee extends Beberage{
    @Override
    public void brew() {
        System.out.println("커피원두");
    }

    @Override
    public void addCondiments() {
        System.out.println("설탕프림");
    }
}


public class Tea extends Beberage{
    @Override
    public void brew() {
        System.out.println("티벡");
    }

    @Override
    public void addCondiments() {
        System.out.println("레몬띄우기");
    }
}
반응형