zoukankan      html  css  js  c++  java
  • 设计模式(七)—— 模版模式

    一、定义:

    一个操作中的算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。

    二、特点:

    • 抽象类(AbstractClass):实现了模板方法,定义了算法的骨架。
    • 具体类(ConcreteClass):实现抽象类中的抽象方法,已完成完整的算法。

    三、情景:

    咖啡冲泡流程:1、把水煮沸 2、用沸水冲泡咖啡 3、把咖啡倒进杯子 4、加糖和牛奶
    茶叶冲泡流程:1、把水煮沸 2、用沸水浸泡茶叶 3、把茶倒进杯子 4、加柠檬

    两个流程中有重复的步骤(1和3),设计咖啡类和茶叶类

    1、咖啡因饮料抽象类(CaffeineBeverage)

    public abstract class CaffeineBeverage {
        
        final void prepareRecipe(){
            boilWater();
            brew();
            pourInCup();
            addCondiments();
        }
    
        abstract void brew();
        abstract void addCondiments();
    
        public void boilWater(){
            System.out.println("把水煮沸");
        }
    
        public void pourInCup(){
            System.out.println("倒进杯子中");
        }
    
    }
    
    
    

    2、咖啡类(Coffee)

    public class Coffee extends CaffeineBeverage{
    
        void brew() {
            System.out.println("用沸水冲泡咖啡");
        }
    
        void addCondiments() {
            System.out.println("加糖和牛奶");
        }
    
    }
    
    

    3、茶类(Tea)

    public class Tea extends CaffeineBeverage{
    
        void brew() {
            System.out.println("用沸水浸泡茶叶");
        }
    
        void addCondiments() {
            System.out.println("加柠檬");
        }
    
    }
      
    
  • 相关阅读:
    3、Less-计算
    2、Less-混合
    1、Less-初见
    5、反射-动态代理
    4、反射-类的构造器:Constrctor
    3、反射-Field
    2、反射-Method&父类
    1、反射-Class&ClassLoader
    5、URLConnection(3)
    Linux进程状态查询
  • 原文地址:https://www.cnblogs.com/fonxian/p/6185276.html
Copyright © 2011-2022 走看看