设计模式——工厂模式

一、简单工厂模式(静态工厂模式)

具体的需求

看一个披萨的项目:要便于披萨种类的扩展,要便于维护

  1. 披萨的种类很多(比如 GreekPizz、CheesePizz 等)
  2. 披萨的制作有 prepare,bake, cut, box
  3. 完成披萨店订购功能。

使用传统的方式来完成

制作披萨
UML类图设计:
在这里插入图片描述
代码如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
订购披萨:
UML类图设计:披萨店通过订购披萨的类来完成各种披萨的订购任务
在这里插入图片描述
代码如下:
在这里插入图片描述
在这里插入图片描述
结果:
在这里插入图片描述

传统的方式的优缺点

在这里插入图片描述
4) 改进的思路分析
分析:修改代码可以接受,但是如果我们在其它的地方也有创建Pizza的代码,就意味
着,也需要修改,而创建Pizza的代码,往往有多处。
思路:把创建Pizza对象封装到一个类中,这样我们有新的Pizza种类时,只需要修改该
类就可,其它有创建到Pizza对象的代码就不需要修改了.-> 简单工厂模式

简单工厂模式的基本介绍

在这里插入图片描述

使用简单工厂模式

简单工厂模式的设计方案: 定义一个可以实例化Pizaa对象的类,封装创建对象的代码。
UML设计:
在这里插入图片描述
代码如下:
在这里插入图片描述
聚合关系
在这里插入图片描述
在这里插入图片描述
结果:
在这里插入图片描述
为什么又叫静态工厂模式?
在这里插入图片描述

在这里插入图片描述

二、工厂方法模式

案例解析

披萨项目新的需求:客户在点披萨时,可以点不同口味的披萨,比如 北京的奶酪pizza、北京的胡椒pizza 或者是伦敦的奶酪pizza、伦敦的胡椒pizza。

思路1

使用简单工厂模式,创建不同的简单工厂类,比如BJPizzaSimpleFactory、LDPizzaSimpleFactory 等等.从当前这个案例来说,也是可以的,但是考虑到项目的规模,以及软件的可维护性、可扩展性并不是特别好

思路2

使用工厂方法模式

工厂方法模式介绍

在这里插入图片描述

工厂方法模式应用案例

披萨项目新的需求:客户在点披萨时,可以点不同口味的披萨,比如 北京的奶酪
pizza、北京的胡椒pizza 或者是伦敦的奶酪pizza、伦敦的胡椒pizza

UML设计:
在这里插入图片描述
代码如下:
Pizza:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
披萨order:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、抽象工厂模式

抽象工厂模式介绍

在这里插入图片描述

抽象工厂模式应用实例

使用抽象工厂模式来完成披萨项目.
UML设计:
在这里插入图片描述
代码:
pizza
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

order:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

工厂模式在JDK-Calendar 应用的源码分析

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

工厂模式小结

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值