(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("炒鸡肉");
    }
}

====== 开烹饪做牛肉 ======
起锅
烧油
炒牛肉
出锅
====== 开始烹饪鸡肉 ======
起锅
烧油
炒鸡肉
出锅

posted @ 2021-12-07 16:50  、嘎路的米。  阅读(23)  评论(0编辑  收藏  举报