设计模式代码实战-模版方法模式

1、问题描述

小明喜欢品尝不同类型的咖啡,她发现每种咖啡的制作过程有一些相同的步骤,他决定设计一个简单的咖啡制作系统,使用模板方法模式定义咖啡的制作过程。系统支持两种咖啡类型:美式咖啡(American Coffee)和拿铁(Latte)。
咖啡制作过程包括以下步骤:

  1. 研磨咖啡豆 Grinding coffee beans
  2. 冲泡咖啡 Brewing coffee
  3. 添加调料 Adding condiments
    其中,美式咖啡和拿铁的调料添加方式略有不同, 拿铁在添加调料时需要添加牛奶Adding milk

输入示例
1
2
输出示例
Making American Coffee:
Grinding coffee beans
Brewing coffee
Adding condiments

Making Latte:
Grinding coffee beans
Brewing coffee
Adding milk
Adding condiments

2、模版方法模式

方法模版类:定义了模版方法有哪些抽象方法,该抽象方法等具体的算法实现
具体方法:实现模版类的抽象方法
请添加图片描述

3、代码

import com.sun.java.accessibility.util.TopLevelWindowListener;

import java.util.*;

public class Main{
    public static void main(String[] args){
        Scanner sc=new Scanner(System.in);

        while(sc.hasNextInt()){
            int tag=sc.nextInt();
            if(tag==1){
                System.out.println("Making American Coffee:");
                AmericanCoffee a=new AmericanCoffee();
                a.template();
            }else if(tag==2){
                System.out.println("Making Latte:");
                LatteCoffee l=new LatteCoffee();
                l.template();
            }
        }


    }
}

abstract class coffee{
    public void template(){
        Grind();
        Brew();
        Add();
    }

    abstract  void Grind();
    abstract  void Brew();
    abstract  void Add();
}

class AmericanCoffee extends coffee{

    @Override
    void Grind() {
        System.out.println("Grinding coffee beans");
    }

    @Override
    void Brew() {
        System.out.println("Brewing coffee");
    }

    @Override
    void Add() {
        System.out.println("Adding condiments");
    }
}


class LatteCoffee extends coffee{

    @Override
    void Grind() {
        System.out.println("Grinding coffee beans");
    }

    @Override
    void Brew() {
        System.out.println("Brewing coffee");

    }

    @Override
    void Add() {
        System.out.println("Adding milk");
        System.out.println("Adding condiments");
    }
}

相关推荐

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

    2024-04-22 03:18:02       66 阅读
  2. 设计模式模板方法模式

    2024-04-22 03:18:02       54 阅读
  3. 设计模式——模板方法模式

    2024-04-22 03:18:02       61 阅读
  4. 设计模式: 模板方法模式

    2024-04-22 03:18:02       44 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-04-22 03:18:02       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-04-22 03:18:02       101 阅读
  3. 在Django里面运行非项目文件

    2024-04-22 03:18:02       82 阅读
  4. Python语言-面向对象

    2024-04-22 03:18:02       91 阅读

热门阅读

  1. RocketMQ的设计理念和目标

    2024-04-22 03:18:02       35 阅读
  2. 数字滤波器的设计

    2024-04-22 03:18:02       32 阅读
  3. TRS: Transformers for Remote Sensing Scene Classification

    2024-04-22 03:18:02       32 阅读
  4. 【面经】4月9日 腾讯/csig/腾讯云/一面/1h30m

    2024-04-22 03:18:02       31 阅读
  5. LeetCode 3.无重复字符发最长字串

    2024-04-22 03:18:02       38 阅读