版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/alionsss/article/details/87565476
文章目录
代码:GitHub |
---|
模板方法设计模式(取餐馆吃饭示例)
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();
}
}