Java接口实战:模拟咖啡制作、订购与消费完整流程(day14)

定义接口

// 咖啡制作接口  
interface CoffeeMaker {  Coffee makeCoffee(String type);  
}  // 咖啡店接口  
interface CoffeeShop {  void orderCoffee(String type, CoffeeConsumer consumer);  
}  // 咖啡消费者接口  
interface CoffeeConsumer {  void receiveCoffee(Coffee coffee);  
}  // 咖啡类  
class Coffee {  private String type;  public Coffee(String type) {  this.type = type;  }  @Override  public String toString() {  return "Coffee of type: " + type;  }  
}

实现接口

// 咖啡工厂实现类  
class CoffeeFactory implements CoffeeMaker {  @Override  public Coffee makeCoffee(String type) {  System.out.println("CoffeeFactory is making a coffee of type: " + type);  return new Coffee(type);  }  
}  // 咖啡店实现类  
class LocalCoffeeShop implements CoffeeShop {  private final CoffeeMaker coffeeMaker;  public LocalCoffeeShop(CoffeeMaker coffeeMaker) {  this.coffeeMaker = coffeeMaker;  }  @Override  public void orderCoffee(String type, CoffeeConsumer consumer) {  System.out.println("LocalCoffeeShop is ordering a coffee of type: " + type);  Coffee coffee = coffeeMaker.makeCoffee(type);  consumer.receiveCoffee(coffee);  }  
}  // 用户实现类  
class CoffeeLover implements CoffeeConsumer {  @Override  public void receiveCoffee(Coffee coffee) {  System.out.println("CoffeeLover received: " + coffee);  }  
}

测试程序

public class CoffeeFlowDemo {  public static void main(String[] args) {  // 创建咖啡工厂  CoffeeMaker coffeeMaker = new CoffeeFactory();  // 创建咖啡店  CoffeeShop coffeeShop = new LocalCoffeeShop(coffeeMaker);  // 创建用户  CoffeeConsumer coffeeLover = new CoffeeLover();  // 咖啡店订购咖啡并给用户  coffeeShop.orderCoffee("Latte", coffeeLover);  }  
}

CoffeeMaker接口定义了制作咖啡的方法,CoffeeShop接口定义了订购咖啡的方法,CoffeeConsumer接口定义了接收咖啡的方法。CoffeeFactoryLocalCoffeeShopCoffeeLover分别实现了这些接口,并模拟了咖啡制作、订购和接收的流程。

总结:今天老师讲到的接口有一点理解不过来,只理解了一个大概,java的世界从接口开始,理解接口才能够真正学会java,看来得多敲代码了。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/782539.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《考虑新能源发电商租赁共享储能的电力市场博弈分析》

本专栏栏目提供文章与程序复现思路,具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

解决前后端通信跨域问题

因为浏览器具有同源策略的效应。 同源策略是一个重要的网络安全机制,用于Web浏览器中,以防止一个网页文档或脚本来自一个源(域、协议和端口),获取另一个源的数据。同源策略的目的是保护用户的隐私和安全,防…

maven pom relativePath属性的作用

maven pom relativePath属性的作用 文章目录 maven pom relativePath属性的作用一、relativePath出现的地方二、relativePath默认值三、四、<relativePath>一个pom路径 一、relativePath出现的地方 搭建maven项目&#xff0c;子模块指定父模块试&#xff0c;经常会在par…

专升本-信息技术介绍

信息技术是什么&#xff1f; 用于管理和处理信息所采用的各种技术的总称 以电子计算机和现代通信为主要手段 位于信息科学体系的技术应用层次 新一代信息技术有哪些&#xff1a; 代表性&#xff1a;人工智能&#xff0c;量子信息&#xff0c;移动通信&#xff0c;物联网&a…

Ubuntu中文输入法设置指南:轻松上手,畅享输入体验

在Linux的世界里,Ubuntu以其强大的功能和优美的界面设计赢得了众多用户的喜爱。然而,对于许多中文用户来说,如何在Ubuntu上设置中文输入法却是一个不小的挑战。今天,就让我来为大家详细介绍一下如何在Ubuntu上轻松设置中文输入法,让您的输入体验更加流畅自如。 首先,我们…

【使用python读取多类型文件夹中的文档内容】

突发奇想&#xff0c;想使用python读取多类型文件夹中的文档内容&#xff0c;在Python中&#xff0c;读取多类型文件夹中的文档内容通常涉及几个步骤&#xff1a; 遍历文件夹以获取文件列表。根据文件扩展名判断文件类型。使用适当的库或方法来读取每种文件类型的内容。 以下…

java数组与集合框架(三)--Map,Hashtable,HashMap,LinkedHashMap,TreeMap

Map集合&#xff1a; Map接口: 基于 键&#xff08;key&#xff09;/值&#xff08;value&#xff09;映射 Map接口概述 Map与Collection并列存在。用于保存具有映射关系的数据:key-value Map 中的key 和value 都可以是任何引用类型的数据Map 中的key 用Set来存放&#xff0…

stitcher类实现多图自动拼接

效果展示 第一组&#xff1a; 第二组&#xff1a; 第三组&#xff1a; 第四组&#xff1a; 运行代码 import os import sys import cv2 import numpy as npdef Stitch(imgs,savePath): stitcher cv2.Stitcher.create(cv2.Stitcher_PANORAMA)(result, pano) stitcher.st…

【每日跟读】常用英语500句(400~500)

【每日跟读】常用英语500句 Where can I buy a ticket? 在哪里能买到票&#xff1f; When is the next train? 下趟火车什么时候到&#xff1f; Thank you so much for helping me move yesterday. 非常感谢你昨天帮我搬家 I’m feeling a little under the weather toda…

创业项目开发(持续更新)

最近项目梳理&#xff1a; 一、业务目标 最重要的业务目标就是要能实现自己做事情赚钱。所以有两个维度&#xff0c;第一个维度就是最重要的就是自己做事情。第二个维度才是赚钱。 如果要自己做事情&#xff0c;需要什么样的事情&#xff0c;这个事情的目标是什么&#xff0…

Vue + .NetCore前后端分离,不一样的快速发开框架

摘要&#xff1a; 随着前端技术的快速发展&#xff0c;Vue.NetCore框架已成为前后端分离开发中的热门选择。本文将深入探讨Vue.NetCore前后端分离的快速开发框架&#xff0c;以及它如何助力开发人员提高效率、降低开发复杂度。文章将从基础功能、核心优势、适用范围、依赖环境等…

微信小程序开发中容易出现的错误思路、误区及示例解析

在微信小程序开发中,由于其特殊的开发环境和运行机制,开发者容易产生一些错误思路和陷入一些误区。以下是一些常见的错误思路和误区,并通过代码示例进行说明: 页面渲染和事件处理的顺序问题 错误思路:开发者认为页面渲染完成后才会执行事件处理函数。 示例代码: // pages/i…

[linux] AttributeError: module ‘transformer_engine‘ has no attribute ‘pytorch‘

[BUG] AttributeError: module transformer_engine has no attribute pytorch Issue #696 NVIDIA/Megatron-LM GitHub 其中这个答案并没有解决我的问题&#xff1a; import flash_attn_2_cuda as flash_attn_cuda Traceback (most recent call last): File "<stdi…

【蓝桥杯嵌入式】六、真题演练(一)-1演练篇:第 届真题

温馨提示&#xff1a; 真题演练分为模拟篇和研究篇。本专栏的主要作用是记录我的备赛过程&#xff0c;我打算先自己做一遍&#xff0c;把遇到的问题和不同之处记录到演练篇&#xff0c;然后再返回来仔细研究一下&#xff0c;找到最佳的解题方法记录到研究篇。 解题记录&#x…

绿联 安装轻量源代码管理器 - Gitea

更多信息点击 1、镜像 gitea/gitea:latest 2、安装 2.1、拉取镜像 2.2、创建容器 本示例中限制了内容最大大小为4GB&#xff0c;也可以不做限制。 2.3、基础设置 开启 交互、TTY、重启策略选择最后一项。 2.4、网络 选择桥接即可。 2.5、存储空间 装在路径必须是“/data”…

整合SpringSecurity+JWT实现登录认证

一、关于 SpringSecurity 在 Spring Boot 出现之前&#xff0c;SpringSecurity 的使用场景是被另外一个安全管理框架 Shiro 牢牢霸占的&#xff0c;因为相对于 SpringSecurity 来说&#xff0c;SSM 中整合 Shiro 更加轻量级。Spring Boot 出现后&#xff0c;使这一情况情况大有…

【编程笔记】学会使用 Git

目录 一、介绍 Git二、安装 Git三、 常用 linux 目录四、Git 的必要配置(1) 查看和删除之前的配置(2) 配置 Git 五、Git 基本理论六、Git 项目搭建七、Git 文件操作八、分支Git 笔记 ❀❀❀(1) 常规使用(2) 分支 一、介绍 Git &#x1f4d6; VCS&#xff1a;Version Control S…

当代深度学习模型介绍--卷积神经网络(CNNs)

AI大模型学习 方向一&#xff1a;AI大模型学习的理论基础 模型和应用的多样化&#xff1a;随着研究的深入&#xff0c;深度学习领域出现了多种创新的模型架构&#xff1a; 卷积神经网络&#xff08;CNNs&#xff09;专门针对图像处理任务进行了优化&#xff0c;通过模拟生物视…

关于WPARAM和LPARAM参数

从前&#xff0c;Windows 是 16 位的。每条message信息都可以携带两段数据&#xff0c;分别称为 WPARAM 和 LPARAM。在消息参数传递中对指针类型使用强制类型转换&#xff0c;这是一种常见用法。第一个参数是一个 16 位值&#xff08;"word"&#xff09;&#xff0c;…

如何过得更幸福?我推荐你读这5本书

快乐不等于幸福。快乐是一种短暂的体验&#xff0c;随着多巴胺的消退而迅速减退。快乐是有捷径的&#xff0c;那就是戏弄相关的神经回路。 幸福是有意义、有目的和积极的生活的持久体验。 今天&#xff0c;为大家推荐一份“幸福书单”。 01 《幸福的勇气》 岸见一郎、古贺史…