模板模式
模板模式:完成一件事情有固定的工序,工序中有的环节是相同的可以共用,有的是个性化的,需要在延续的子类里实现个性化。
把规定的工序和工序中可共享的部分放到抽象类里,把需要个性化的部分声明为抽象方法,留给模板实现类里具体实现。

来举个例子: 比如我们做菜可以分为三个步骤 (1)备料 (2)具体做菜 (3)盛菜端给客人享用,这三部就是算法的骨架 ;
相同部分是三个步骤,备料,盛菜端给客人享用;个性化部分是菜的具体烧制。 下来我们就代码实现如下
1. 先来写一个抽象的做菜父类:
public abstract class DodishTemplate { /** * 具体的整个过程 */ protected void dodish(){ this.preparation(); this.doing(); this.carriedDishes(); } /** * 备料 */ public void preparation() { System.out.println("超市买菜"); System.out.println("洗剪吹,为注册提供干净食材"); } /** * 做菜 */ public abstract void doing();
/** * 上菜 */ public abstract void carriedDishes () { System.out.println("装菜入盘子碗"); System.out.println("对号入座,放入桌上"); } }
2. 下来做两个番茄炒蛋(EggsWithTomato)和红烧肉(Bouilli)实现父类中的抽象方法
/** * 西红柿炒蛋 * @author aries */ public class EggsWithTomato extends DodishTemplate{ @Override public void doing() { System.out.println("鸡蛋倒入锅里,然后倒入西红柿一起炒。"); } }
/** * 红烧肉 * @author aries * */ public class Bouilli extends DodishTemplate{ @Override public void doing() { System.out.println("将切好的猪肉倒入锅中炒一会然后倒入土豆连炒带炖。"); } }
3. 在测试类中我们来做菜
public class App { public static void main(String[] args) {
System.out.println("--------------西红柿鸡蛋---------------"); DodishTemplate eggsWithTomato = new EggsWithTomato(); eggsWithTomato.dodish(); System.out.println("--------------红烧肉---------------"); DodishTemplate bouilli = new Bouilli(); bouilli.dodish(); } }
浙公网安备 33010602011771号