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

    运行结果:

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

  • 相关阅读:
    NSLog的各种打印格式符 和 打印CGRect时用NSStringFromCGRect
    mac os 隐藏文件夹的小技巧
    Triangle---minimum path sum
    Partition List
    Longest Common Prefix
    Count and Say
    C++ 左值 右值
    py2exe生成.exe(python3.4 尝试)
    longest incresing sequence
    Palindrome number
  • 原文地址:https://www.cnblogs.com/miantiaoandrew/p/9105766.html
Copyright © 2011-2022 走看看