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

Posted 面条啊Andrew

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式---模板方法模式相关的知识,希望对你有一定的参考价值。

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

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

通常过程的代码:

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("鱼香肉丝出锅...");
    }
}

运行结果:

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

以上是关于设计模式---模板方法模式的主要内容,如果未能解决你的问题,请参考以下文章

设计模式之模板方法模式代码示例

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

行为型设计模式之模板方法模式

Spring针对事务处理提供哪两种事务编程模式。

设计模式之模板方法模式(Template Method)详解及代码示例

设计模式之模板方法模式实战解析