千家信息网

设计模式之工厂模式-工厂方法模式

发表于:2025-02-01 作者:千家信息网编辑
千家信息网最后更新 2025年02月01日,设计模式之工厂模式-工厂方法模式大家好,欢迎来到污污弹公司,今天司小司又接到了一个新活-披萨项目。来源:凯哥Java(kaigejava)需求:披萨项目:要方便披萨品种的扩展、要便于维护、要能运行时候
千家信息网最后更新 2025年02月01日设计模式之工厂模式-工厂方法模式


设计模式之工厂模式-工厂方法模式

大家好,欢迎来到污污弹公司,今天司小司又接到了一个新活-披萨项目。

来源:凯哥Java(kaigejava)

需求:

披萨项目:

要方便披萨品种的扩展、要便于维护、要能运行时候方便扩展

来看看披萨族设计:

司小司经过分析得到:披萨都需要烘焙(bake)、切割(cut)、包装(box)还有就是披萨原材料准备(prepare)。其中变化的就是prepare准备的原材料。不同披萨的原材料不同,但是都需要进行烘焙、切割、包装。所以,我们这里原材料方法就做抽象的,不具体实现了。经过分析之后得到如下类图:

第一次设计:使用简单工厂模式(可以参考上一篇的司小司面馆项目)发现不行。为什么呢?

随着披萨越来越火,很多地方都要JM了。如果JM的话,每个地方都要创建一个简单工厂模式那样,同样的代码,就要创建很多份,在维护的时候,就很麻烦的。

选择第二种设计:工厂方法模式。

先来看看项目结构:

说明:

1:domain:是具体pojo对象。都继承于PizzaAbstract类

其中以BeiJin开头的,都是北京连锁店的。以ShanHai开头的都是上海连锁店的。

2和3是披萨和披萨订单的抽象类

4:具体连锁点的订单类。都继承于PiazzOrderAbstract类

5:测试类

我们先来看看两个抽象类。

PizzaAbstract类:


PizzaOrderAbstract类:

在来看一个北京的greekpizza:

在来看看BeiJinOrderPizza:

测试类:

查看运行结果:

通过上面代码演示,我们可以得到以下:

工厂方法模式设计方案:

将披萨项目里的披萨对象实例化功能抽象成抽象方法,在不同JM店具体实现功能。

工厂方法模式:

定义了一个创建对象的抽象方法,由子类决定要实例化的类。从这句话中,我们可以知道,工厂方法模式是将对象的实例化(创建)推迟到子类中了。


工厂方法模式和简单工厂模式对比:

简单工厂模式:

根据类的标识,通过工厂对象就可以得到具体类的实例对象了。在工厂对象里面,类对象的实例化如下:

对象的实例化,是在工厂对象里面。

工厂方法模式:

是将对象的创建,抽取出来了。就是创建披萨的方法,抽取到一个具体的类中。

我们在来看看,披萨订单对象:

在具体调用的时候:

PizzaOrderAbstract bjOder = new BeiJinOrderPizza();调用具体的子类。

而对象的实例化,是在子类中进行的。

联系凯哥--》凯哥Java(kaigejava)

凯哥个人博客:www.kaigejava.com。个人博客可以私信凯哥哦~

工厂方法模式通过一个抽象的工厂类来创建工厂,再由工厂通过一定的方法创造一定的对象,这样如果有新的产C出现不需要修改已有代码只要新建一个产品的从子类和工厂的子类就可以啦。


工厂 模式 对象 披萨 方法 实例 子类 设计 项目 原材 原材料 不同 代码 就是 时候 订单 连锁 个人 功能 博客 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 dns服务器 网速 上海海事大学数据库怎么进 五华区智能化软件开发价格信息 象棋软件开发 思路 spring的事务是基于数据库 数据库 字段 分析 莫纳克电梯如何用服务器调称重 工控网络技术实训报告总结 长丰品质网络技术开发不二之选 潍坊公司app软件开发 深圳服务器回收有哪些公司 第五届肇庆市网络安全宣传周 网络安全的主题会 网络安全学习体会 从另外的表格中抓取数据库 武林外传的服务器叫什么 服务器php模块是什么 华为服务器用的是哪家的处理器 新员工网络安全答案 岳阳串口服务器厂家 联想服务器连接管理口 山东软件开发者价格 图书管理数据库表代码 宽城区通用网络技术服务诚信合作 用友t3客户端连接服务器特别慢 新能源软件开发价格多少 磐云网络安全课程 学校网络安全学习内容 如何开启手机服务器 浙江小阪互联网科技有限公司
0