设计模式之旅—工厂模式

工厂模式分析思路介绍:

  • 工厂模式的介绍
  • 工厂模式的实战
  • 抽象工厂模式的实战
  • 工厂模式的总结

一、工厂模式介绍

  • 概念: 实例化对象用工厂方法代替new操作。其中工厂模式包括工厂方法模式和抽象工厂模式,抽象工厂模式是工厂方法模式的扩展(利用工厂方法把实例化的work推迟到子类中去实现,即定义一个接口来创建对象,但是让子类来决定哪些类需要被实例化)。
  • 设计思想:
    • 1)尽量松耦合,一个对象的依赖对象的变化与本身无关;
    • 2)责任分割,具体产品与客户端剥离。
  • 案例场景描述: 做为小明的女朋友小黄,在了解到实时的天气情况后,每次约会之前就能合理的安排自己的穿着,是穿裙子好呀还是穿长裤好喃? 是穿长裙还是短裙,长裤还是短裤好喃?所以小黄就能有很多种穿着的选择。

二、工厂模式的实战

1、工厂模式类图

在这里插入图片描述

2、案例场景描述
  • 小黄为了和小明约会,准备了长裙、长裤和短裤,只是小黄一直没有想好要穿什么比较合适,所以站在镜子前面各种试喽!!!(最终决定还是穿长裙比较有气质,更能吸引小明的注意)
3、结合案例场景分析(四种方式)
方式一:基础实现

1)衣服接口的定义
在这里插入图片描述
2)裙类的实现
在这里插入图片描述
3)裤类的实现
在这里插入图片描述
4)Test类的实现
在这里插入图片描述
5)最终执行结果
在这里插入图片描述

方式二:定义工厂类实现

1)工厂类的定义
在这里插入图片描述
2)Test类的实现
在这里插入图片描述
3)最终执行结果
在这里插入图片描述

方式三:根据类名称的方式实现

1)工厂类的定义
在这里插入图片描述
2)Test类的实现
在这里插入图片描述
3)最终执行结果
在这里插入图片描述

方式四:以配置文件分离的方式实现

1)properties配置
在这里插入图片描述
2)短裤类的实现
在这里插入图片描述
3)properteis配置文件的读取
在这里插入图片描述
4)工厂类的定义
在这里插入图片描述
5)Test类的实现
在这里插入图片描述
6)最终执行结果
在这里插入图片描述

三、抽象工厂模式的实战

1、抽象工厂模式类图

在这里插入图片描述

2、案例场景描述
  • 当然小明最终还是拜倒在小黄的石榴裙下,相处久了两人决定要领结婚证去结婚了,这一天来挑选结婚穿的礼服,但礼服分男款和女款、中式礼服和西式,他俩也是纠结了好久也没有确定,然后就是站在镜子前一通试喽!!!
3、结合案例场景分析

1)男款定义
在这里插入图片描述
2)女款定义
在这里插入图片描述
3)男款中式的实现
在这里插入图片描述
4)女款中式的实现
在这里插入图片描述
5)男款西式的实现
在这里插入图片描述
6)女款西式的实现
在这里插入图片描述
7)款式工厂的定义
在这里插入图片描述
8)中式工厂的实现
在这里插入图片描述
9)西式工厂的实现
在这里插入图片描述
10)Test类的实现
在这里插入图片描述
11)最终执行结果
在这里插入图片描述

四、工厂模式的总结

1、工厂模式和抽象工厂模式的对比
  • 工厂模式是一种极端情况的抽象工厂模式,而抽象工厂模式可以看成是工厂模式的推广
  • 工厂模式用来创建一个产品的等级结构,而抽象工厂模式是用来创建多个产品的等级结构
  • 工厂模式只有一个抽象产品类,而抽象工厂模式有多个抽象产品类
2、工厂模式的好处
  • 系统可以在不修改具体工厂角色的情况下引进新的产品
  • 客户端不必关心对象的如何创建
  • 更好的理解面向对象的原则和面向接口的编程
3、适用场景
  • 有一组类似的对象需要创建;
  • 在编码时不能确定需要创建哪种类的对象实例;
  • 系统需要考虑扩展,不应该依赖于产品类实例对象如何被创建、组合和表达的细节。
4、具体相关应用实例
1) Spring BeanFactory
  • BeanFactory,作为Spring基础的IOC容器是Spring的一个Bean工厂。如果单从工厂模式的角度考虑,它就是用来【生产Bean】,然后提供给客户端。
1) Bean的实例化过程
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值