模板方法设计模式(取餐馆吃饭示例)
0. UML结构图
1. 取餐馆吃饭示例 Code
1.1 模板 - 餐馆抽象类
public abstract class Restaurant {
private void orderDishes() {
System.out.println("Restaurant.orderDishes 点餐");
}
protected abstract void cook();
private void payMoney() {
System.out.println("Restaurant.payMoney 收钱");
}
public void haveAMeal() {
orderDishes();
cook();
payMoney();
}
}
1.2 面食餐馆
public class NoodleRestaurant extends Restaurant {
@Override
protected void cook() {
System.out.println("NoodleRestaurant.cook 制作面食");
}
}
1.3 海鲜餐馆
public class SeafoodRestaurant extends Restaurant {
@Override
protected void cook() {
System.out.println("SeafoodRestaurant.cook 制作海鲜菜品");
}
}
1.4 火锅餐馆
public class HotpotRestaurant extends Restaurant {
@Override
protected void cook() {
System.out.println("SeafoodRestaurant.cook 制作火锅");
}
}
2. 取餐馆吃饭示例 Test
public class TemplateTest {
public static void main(String[] args) {
Restaurant seafoodRestaurant = new SeafoodRestaurant();
seafoodRestaurant.haveAMeal();
Restaurant noodleRestaurant = new NoodleRestaurant();
noodleRestaurant.haveAMeal();
}
}