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

    运行结果:

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

  • 相关阅读:
    Ajax beforeSend和complete 方法与防止重复提交
    tablesorter周边文档
    对委托的一些短浅理解
    Nginx核心要领五:worker_processes、worker_connections设置
    二进制安装k8s 教程
    安装 Docker Engine-Community
    centos7.x 安装 NodeJS、yarn、pm2
    cfssl
    k8s各个进程 占用内存大小
    Linux下查看某一进程所占用内存的方法
  • 原文地址:https://www.cnblogs.com/miantiaoandrew/p/9105766.html
Copyright © 2011-2022 走看看