(21)模板模式
概念
定义一个算法中的框架,将一些步骤延迟到子类中实现,使得子类不需要改变算法结构就能重新定义算法的某些步骤。
- 炒菜时需要起锅、烧油、炒菜、出锅等步骤。但是起锅、烧油、出锅等步骤是必须的。
- 炒菜这步骤有不确定因素,可能炒白菜,也可能炒青菜。
- 可以把炒菜的动作放到子类去实现,子类想炒什么菜就炒什么菜。
实现方式
import lombok.Data;
/**
* 模板
*/
public class Demo {
public static void main(String[] args) {
System.out.println("====== 开烹饪做牛肉 ======");
cook(new Beef());
System.out.println("====== 开始烹饪鸡肉 ======");
cook(new Chicken());
}
public static void cook(Cooking c) {
c.cook();
}
}
// 烹饪
@Data
abstract class Cooking {
public abstract void food();
public void cook() {
System.out.println("起锅");
System.out.println("烧油");
food();
System.out.println("出锅");
}
}
@Data
class Beef extends Cooking {
@Override
public void food() {
System.out.println("炒牛肉");
}
}
@Data
class Chicken extends Cooking {
@Override
public void food() {
System.out.println("炒鸡肉");
}
}
====== 开烹饪做牛肉 ======
起锅
烧油
炒牛肉
出锅
====== 开始烹饪鸡肉 ======
起锅
烧油
炒鸡肉
出锅