登录
/
注册
首页
论坛
其它
首页
科技
业界
安全
程序
广播
Follow
关于
博客
发1篇日志+1圆
记录
发1条记录+2圆币
发帖说明
登录
/
注册
账号
自动登录
找回密码
密码
登录
立即注册
搜索
搜索
关闭
CSDN热搜
程序园
精品问答
技术交流
资源下载
本版
帖子
用户
软件
问答
教程
代码
VIP网盘
VIP申请
网盘
联系我们
道具
勋章
任务
设置
我的收藏
退出
腾讯QQ
微信登录
返回列表
首页
›
业界区
›
业界
›
Java课堂|餐饮的本质(设计模式之工厂模式) ...
Java课堂|餐饮的本质(设计模式之工厂模式)
[ 复制链接 ]
姜删懔
2025-6-6 19:53:15
前言
本文主要讲述
工厂模式
,文中使用通俗易懂的案例,使你更好的学习本章知识点并理解原理,做到有道无术。
一.什么是工厂模式
工厂模式是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学习视频,戳我直达
五.总结
在工厂模式中,咱们只需要传递需求给工厂类的方法,就能获取我们所需要的对象,从而降低类与类之间的耦合度,我们也无需了解类的创建过程和对象的创建过程,只需要关注对象的使用即可。
但是工厂模式有个弊端,就是每添加多一个具体产品类,则需要改动工厂类里的方法,这就违背了设计模式中的开闭原则。就像茶餐厅里多一个菜品时,我们就需要更新菜单。
下一章,
我们将带大家学习企业的运行模式(设计模式之抽象工厂模式)。
来源:程序园用户自行投稿发布,如果侵权,请联系站长删除
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
回复
本版积分规则
回帖并转播
回帖后跳转到最后一页
浏览过的版块
安全
签约作者
程序园优秀签约作者
发帖
姜删懔
2025-6-6 19:53:15
关注
0
粉丝关注
18
主题发布
板块介绍填写区域,请于后台编辑
财富榜{圆}
敖可
9984
黎瑞芝
9990
杭环
9988
4
猷咎
9988
5
凶契帽
9988
6
接快背
9988
7
氛疵
9988
8
恐肩
9986
9
虽裘侪
9986
10
里豳朝
9986
查看更多