模板模式

模板模式:完成一件事情有固定的工序,工序中有的环节是相同的可以共用,有的是个性化的,需要在延续的子类里实现个性化。

                 把规定的工序和工序中可共享的部分放到抽象类里,把需要个性化的部分声明为抽象方法,留给模板实现类里具体实现。

 

 

来举个例子: 比如我们做菜可以分为三个步骤 (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(); } }

 

posted on 2023-02-23 14:40  蔻德盈  阅读(22)  评论(0)    收藏  举报