设计模式---模板方法模式

很简单的一种设计模式,直接举例吧

平时做饭炒菜,都是按照一定的顺序来做。先倒油,再热油,然后炒菜,放调料,最后炒熟。不管是西红柿炒鸡蛋,还是鱼香肉丝,都是如此。

通常过程的代码:

package com.designmodel.template;

public abstract class CookStep {

    void cookProcess() {
        pourOil();
        heatOil();
        pourVegetable();
        pourSauce();
        fry();
    }

    private void pourOil() {
        System.out.println("倒油");
    }
    
    private void heatOil() {
        System.out.println("热油");
    }
    
    abstract void pourVegetable();
    abstract void pourSauce();
    
    private void fry() {
        System.out.println("炒熟");
    }
}

西红柿炒鸡蛋的过程:

package com.designmodel.template;

public class CookTomatoWithEgg extends CookStep {

    @Override
    void pourVegetable() {
        System.out.println("倒入鸡蛋和西红柿");
    }

    @Override
    void pourSauce() {
        System.out.println("撒咸盐和白糖");
    }

}

鱼香肉丝的过程:

package com.designmodel.template;

public class CookYuXiang extends CookStep {

    @Override
    void pourVegetable() {
        System.out.println("炒肉丝,胡萝卜丝,木耳丝等等");
    }

    @Override
    void pourSauce() {
        System.out.println("放咸盐");
    }

}

客户端:

package com.designmodel.template;

public class Client {

    public static void main(String[] args) {
        CookTomatoWithEgg c1 = new CookTomatoWithEgg();
        c1.cookProcess();
        System.out.println("西红柿鸡蛋出锅...");
        CookYuXiang c2 = new CookYuXiang();
        c2.cookProcess();
        System.out.println("鱼香肉丝出锅...");
    }
}

运行结果:

倒油
热油
倒入鸡蛋和西红柿
撒咸盐和白糖
炒熟
西红柿鸡蛋出锅...
倒油
热油
炒肉丝,胡萝卜丝,木耳丝等等
放咸盐
炒熟
鱼香肉丝出锅...

posted @ 2018-05-29 16:34  面条啊Andrew  阅读(115)  评论(0编辑  收藏  举报