[Thực hành] Triển khai Template Method

Behavioral Design Pattern

Mục tiêu

Luyện tập triển khai template method pattern.

Mô tả

Meal là lớp trừu tượng có một số phương thức

  • doMeal() để thực hiện tạo một bữa ăn gồm: chuẩn bị, nấu nướng, ăn, dọn dẹp.
  • prepateIngredients() để chuẩn bị nấu ăn
  • cook() thực hiện nấu ăn
  • eat() thực hiện ăn
  • cleanup() thực hiện dọn dẹp

Lớp HamburgerMeal để chuẩn bị bữa ăn với Humburger. Lớp TacoMeal để chuẩn bị bữa ăn với Taco. Viết chương trình thực hiện các lớp trên.

Các bước làm

Bước 1: Tạo lớp Meal

public abstract class Meal {

    // template method
    public final void doMeal() {
        prepareIngredients();
        cook();
        eat();
        cleanUp();
    }

    public abstract void prepareIngredients();

    public abstract void cook();

    public void eat() {
        System.out.println("Mmm, that's good");
    }

    public abstract void cleanUp();

}

Bước 2: Tạo lớp HamburgerMeal

public class HamburgerMeal extends Meal {

    @Override
    public void prepareIngredients() {
        System.out.println("Getting burgers, buns, and french fries");
    }

    @Override
    public void cook() {
        System.out.println("Cooking burgers on grill and fries in oven");
    }

    @Override
    public void cleanUp() {
        System.out.println("Throwing away paper plates");
    }

}

Bước 3: Tạo lớp TacoMeal

public class TacoMeal extends Meal {

    @Override
    public void prepareIngredients() {
        System.out.println("Getting ground beef and shells");
    }

    @Override
    public void cook() {
        System.out.println("Cooking ground beef in pan");
    }

    @Override
    public void eat() {
        System.out.println("The tacos are tasty");
    }

    @Override
    public void cleanUp() {
        System.out.println("Doing the dishes");
    }

}

Bước 4: Tạo lớp TemplateMethodDemo

public class TemplateMethodDemo {
    public static void main(String[] args) {

        Meal meal1 = new HamburgerMeal();
        meal1.doMeal();

        System.out.println();

        Meal meal2 = new TacoMeal();
        meal2.doMeal();

    }

}

Bước 5: Thực thi chương trình và quan sát kết quả.

Nguồn: https://github.com/codegym-vn/java-web-design-pattern-template-method

Leave a Reply

Your email address will not be published. Required fields are marked *