登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
导读
排行榜
资讯
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
写记录
写博客
小组
VIP申请
VIP网盘
网盘
联系我们
发帖说明
道具
勋章
任务
淘帖
动态
分享
留言板
导读
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
Java课堂|餐饮的本质(设计模式之工厂模式) ...
Java课堂|餐饮的本质(设计模式之工厂模式)
[ 复制链接 ]
姜删懔
2025-6-6 19:53:15
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
前言
本文主要讲述
工厂模式
,文中使用通俗易懂的案例,使你更好的学习本章知识点并理解原理,做到有道无术。
一.什么是工厂模式
工厂模式是23种设计模式中
创建型模式
的一种,它是一个最简单的对象创建管理方式,根据调用方传递的类型来创建对象并返回。封装了对象创建的过程,降低了程序模块之间的耦合度。
二.生活中的工厂模式
1.沙县小吃
江帅记得沙县有炒饭、炒粉、云吞、馄饨、蒸饺、汤等各种各样的餐品,而你在沙县只需要告诉老板你想要什么并付款,老板会制作好相关的食物给到你,你不需要了解食物到底是怎么样制作出来的,只需要传递需求就能获取想要的东西,这就跟设计模式的工厂模式很相似。
2.金拱门(麦当劳)与开封菜(KFC)
麦当劳和肯德基是著名的快餐店,有诸多食品,比如汉堡。汉堡这个食物是由他们提供给我们的,而我们只需要告诉餐厅我们需要的是哪个汉堡并付钱就可以了,具体他们是怎么完成这个汉堡的,就不需要我们去考虑了,而这就像设计模式的工厂模式一样。
3.茶餐厅
这些茶餐厅也跟其他餐饮一样,你只需要告诉店员你想要的餐品并付款,后厨就能跟你的需求制作出你点的美食,你也无需关注它如何制作出来的,这也就跟设计模式的工厂模式很相似。
三.工厂模式的实现
接下来江帅以一家茶餐厅来举例,用工厂模式来实现。先创建一个
抽象产品类
食物类和两个
具体产品类
奶茶类和三明治类
package com.qianfeng.ran
/\*
* @author:江帅
*
* 抽象产品
* 定义一个所有食物的抽象父类:食物类
\*/
public abstract class Food{
//定义一个打印当前食物名的方法
void pirntName();
}
/\*
* 具体产品
* 创建一个继承食物类的子类:奶茶类
\*/
class MikeTea extends Food{
//重写父类的抽象方法
public void printName(){
System.out.println("奶茶");
}
}
/\*
* 具体产品
* 创建一个继承食物类的子类:三明治类
\*/
class Sandwich extends Food{
//重写父类的抽象方法
public void printName(){
System.out.println("三明治");
}
}
复制代码
再创建一个
具体工厂
,类似茶餐厅
package com.qianfeng.ran
/*
* @author:江帅
*
* 具体工厂
* 定义一个工厂类:茶餐厅
*/
public class TeaRestaurantFactory{
//定义一个根据需求返回具体食物对象的静态方法,类似厨房
public static Food kitchen(String type){
//判断传递进来的需求是否为 null ,为 null 则返回 null 对象
if(type == null){
return null;
}
//根据需求返回对应的食物对象
if("1".equals(type)){ //假设传递"1"为需要奶茶
//返回奶茶对象
return new MikeTea();
}else if("2".equals(type)){//假设传递"2"为需要三明治
//返回三明治对象
return new Sandwich();
}
}
}
复制代码
最后通过工厂类(茶餐厅)调用对应的静态方法(厨房)并传递需求(字符串)获取对象(食物)
package com.qianfeng.ran
/*
* @author:江帅
*
* 客户端
*/
public class Demo{
public static void main(String[] args){
//调用工厂类的静态方法,并传递字符串"1"获取奶茶对象
Food mikeTea = TeaRestaurantFactory.kitchen("1");
//执行结果:
//"奶茶"
System.out.println(mikeTea.printName());
//调用工厂类的静态方法,并传递字符串"2"获取三明治对象
Food sandwich = TeaRestaurantFactory.kitchen("1");
//执行结果:
//"三明治"
System.out.println(sandwich.printName());
}
}
复制代码
四.配套视频
如果你不习惯阅读技术文章,或是对文中的技术概念不能很好地理解,可以来看看
江帅
帮你筛选出的视频教程。
与本文配套的Java学习视频,戳我直达
五.总结
在工厂模式中,咱们只需要传递需求给工厂类的方法,就能获取我们所需要的对象,从而降低类与类之间的耦合度,我们也无需了解类的创建过程和对象的创建过程,只需要关注对象的使用即可。
但是工厂模式有个弊端,就是每添加多一个具体产品类,则需要改动工厂类里的方法,这就违背了设计模式中的开闭原则。就像茶餐厅里多一个菜品时,我们就需要更新菜单。
下一章,
我们将带大家学习企业的运行模式(设计模式之抽象工厂模式)。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
Java
课堂
餐饮
本质
设计模式
相关帖子
Java关键字解析之abstract:抽象的本质、规范定义与多态基石
[数据结构/Java] 数据结构之循环队列
Java关键字解析之volatile:可见性的守护者、有序性的调节器
1.java基本语法
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
Java Optional 完全指南:优雅处理 null 的利器
上下文协议(MCP)Java SDK 指南
Java函数式接口——渐进式学习
大语言模型~Ollama本地模型和java一起体验LLM
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
相关推荐
业界
Java关键字解析之abstract:抽象的本质、规范定义与多态基石
0
38
斜素欣
2025-12-13
安全
[数据结构/Java] 数据结构之循环队列
0
497
豺独
2025-12-14
业界
Java关键字解析之volatile:可见性的守护者、有序性的调节器
1
99
阎一禾
2025-12-14
安全
1.java基本语法
0
521
每捎京
2025-12-15
安全
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
1
242
褐洌
2025-12-16
安全
Java 25 (LTS) 重磅发布:AI、性能、安全全面革新,新手入门门槛再创新低!
1
299
肿圬后
2025-12-16
业界
Java Optional 完全指南:优雅处理 null 的利器
0
963
古修蟑
2025-12-17
业界
上下文协议(MCP)Java SDK 指南
0
289
豌笆
2025-12-17
业界
Java函数式接口——渐进式学习
0
482
列蜜瘘
2025-12-18
安全
大语言模型~Ollama本地模型和java一起体验LLM
0
472
裴涛
2025-12-18
回复
(6)
染罕习
2025-10-21 02:56:02
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
很好很强大 我过来先占个楼 待编辑
鞍汉
2025-11-27 16:48:17
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
这个有用。
丁若云
2025-11-29 20:22:15
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
感谢,下载保存了
移国拱
2025-12-9 13:27:44
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
喜欢鼓捣这些软件,现在用得少,谢谢分享!
闻成
7 天前
回复
使用道具
举报
照妖镜
程序园永久vip申请,500美金$,无限下载程序园所有程序/软件/数据/等
感谢分享,学习下。
寂傧
3 天前
回复
使用道具
举报
照妖镜
猛犸象科技工作室:
网站开发,备案域名,渗透,服务器出租,DDOS/CC攻击,TG加粉引流
分享、互助 让互联网精神温暖你我
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
签约作者
程序园优秀签约作者
发帖
姜删懔
3 天前
关注
0
粉丝关注
23
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
3934307807
991124
anyue1937
9994892
kk14977
6845357
4
xiangqian
638210
5
韶又彤
9997
6
宋子
9982
7
闰咄阅
9993
8
刎唇
9993
9
俞瑛瑶
9998
10
蓬森莉
9951
查看更多
今日好文热榜
458
从繁琐到高效:招聘自动化系统优化招聘流程
710
接着唠:三级缓存为啥是“刚需”?没有它Sp
896
17.行为型 - 观察者模式 (Observer Pattern
483
最小二乘问题详解9:使用Ceres求解非线性最
176
FFmpeg 关键的结构体
758
强壳保护NET代码!Dnguard 4.9.4最新企业旗
617
LLL与BKZ算法
778
AI幻觉闲聊杂谈
387
央企程序员AI创业后续
726
使用DNGuard加密并打包C# .NET Core程序为
300
[POI 2021/2022 R1] Domino 题解
68
揭秘:如何用0.02/张调用Openai官方GPT Ima
307
【Agent】MemOS 源码笔记---(6)---MemSched
999
实时消息推送(Websocket/SSE)
276
数据库表设计
685
[生存技能] 速冻包子热处理工艺优化研究:
656
Oracle索引技术:理论与实操全解析
203
人工智能如何改变 Anthropic 的工作方式
620
IntelliJ IDEA 免费版正式发布,太香了!
720
Spring AI Alibaba 入门指南