zoukankan      html  css  js  c++  java
  • 设计模式---模板方法模式

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

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

    通常过程的代码:

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

    运行结果:

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

  • 相关阅读:
    vscode常用插件列表
    使用docker构建supervisor全步骤
    docker删除虚悬镜像(临时镜像文件)
    消息队列的对比
    ECharts使用:this.dom.getContext is not a function
    curl命令行请求
    工作工具清单
    《SQL优化入门》讲座总结
    初始化git库并配置自动部署
    php代码进行跨域请求处理
  • 原文地址:https://www.cnblogs.com/miantiaoandrew/p/9105766.html
Copyright © 2011-2022 走看看