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

server/2024/9/24 6:34:46/

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{@Overridevoid Grind() {System.out.println("Grinding coffee beans");}@Overridevoid Brew() {System.out.println("Brewing coffee");}@Overridevoid Add() {System.out.println("Adding condiments");}
}class LatteCoffee extends coffee{@Overridevoid Grind() {System.out.println("Grinding coffee beans");}@Overridevoid Brew() {System.out.println("Brewing coffee");}@Overridevoid Add() {System.out.println("Adding milk");System.out.println("Adding condiments");}
}

http://www.ppmy.cn/server/6982.html

相关文章

LeetCode【第2575题】

来看下今天的算法题,这题是LeetCode的第2575题:找出字符串的可整除数组。 问题描述 来源:LeetCode第2575题 难度:中等 给你一个下标从 0 开始的字符串 word ,长度为 n ,由从 0 到 9 的数字组成。另给你一个正整数 m 。word 的可整除数组 div 是一个长度为 n 的整数数…

C# 开源SDK 工业相机库 调用海康相机 大恒相机

C# MG.CamCtrl 工业相机库 介绍一、使用案例二、使用介绍1、工厂模式创建实例2、枚举设备,初始化3、启动相机4、取图5、注销相机 三、接口1、相机操作2、启动方式3、取图4、设置/获取参数 介绍 c# 相机库,含海康、大恒品牌2D相机的常用功能。 底层采用回…

第二届 Oceanbase 开发者大会 实录

第二届 Oceanbase 开发者大会 实录 今天很有幸参加了Oceanbase 开发者大会,我是真的我一开始还不知道什么是Oceanbase ,直到我开了会才知道。看来真的需要多参加一些这样活动。 会议议程 我们科普一下什么是Oceanbase OceanBase 是阿里巴巴集团推出…

hadoop

执行下面命令输出目录是不能存在的(wcoutput)

OpenHarmony轻量系统开发【4】编写第一个程序、启动流程分析

摘要:本文简单介绍如何编写第一个hello world程序,以及程序是被执行的 适合群体:适用于Hi3861开发板,启动流程分析 4.1编写第一个程序 编写一个hello world程序比较简单,可以参考官网: https://gitee.c…

K8s ingress-controller中nginx文件上传大小的限制

# 20、K8s ingress-controller中nginx文件上传大小的限制 问题:1.应用程序中上传文件文件出错,页面提示“您上传的文件太大了,请压缩图片后重试。” 2.通过F12 可以看到,后台提示 403错误,可以看到出错是由于nginx的限…

Linux发行版

Linux发行版(Linux Distribution,简称“distro”)是基于Linux内核的操作系统,它包括了Linux内核以及一套预选的应用程序/软件、图形用户界面(GUI)、管理工具、安装程序、文档以及支持服务。Linux发行版旨在…

【华为OD机试】虚拟理财游戏【C卷|100分】

【华为OD机试】-真题 !!点这里!! 【华为OD机试】真题考点分类 !!点这里 !! 题目描述 在一款虚拟游戏中生活,你必须进行投资以增强在虚拟游戏中的资产以免被淘汰出局。 现有一家Bank,它提供有若干理财产品 m 个,风险及投资回报不同,你有 N(元)进行投资,能接收的总风险…