前言
本文主要讲述工厂模式,文中使用通俗易懂的案例,使你更好的学习本章知识点并理解原理,做到有道无术。
一.什么是工厂模式
工厂模式是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学习视频,戳我直达
五.总结
在工厂模式中,咱们只需要传递需求给工厂类的方法,就能获取我们所需要的对象,从而降低类与类之间的耦合度,我们也无需了解类的创建过程和对象的创建过程,只需要关注对象的使用即可。
但是工厂模式有个弊端,就是每添加多一个具体产品类,则需要改动工厂类里的方法,这就违背了设计模式中的开闭原则。就像茶餐厅里多一个菜品时,我们就需要更新菜单。文章来源:https://www.toymoban.com/news/detail-465553.html
下一章,我们将带大家学习企业的运行模式(设计模式之抽象工厂模式)。文章来源地址https://www.toymoban.com/news/detail-465553.html
到了这里,关于Java课堂|餐饮的本质(设计模式之工厂模式)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!