你能get到的知识点
- 工厂模式的介绍
- 工厂模式通过代码的实现
原文链接:https://blog.csdn.net/qq_41929184/article/details/118366444
你的支持就是我最大的动力。
文章目录
-
-
- 你能get到的知识点
- 1 简介
- 2 场景引入
-
- 2.1 初始场景
- 2.2 增加需求
- 3 运用到简单工厂模式
- 4 运用到工厂模式
- 5 工厂模式在源码的应用:
-
1 简介
创建者模式模式提供创建对象的机制, 能够提升已有代码的灵活性和可复。
创建者模式包括:工厂方法、抽象工厂、生成器、原型、单例,这5类。
这一节主要讲述工厂模式:
2 场景引入
2.1 初始场景
场景实例: 小葛参加Jd平台的抽奖活动,而此时只有一种奖品奖品是1000元购物卡一张。
为了更好的模拟,假设没有不抽中的情况
那么我们来模拟小葛参加抽奖的这个过程,代码如下
目录结构:
类 | 功能 |
---|---|
AwardService | 模拟发放1000元购物卡奖品 |
Test | 测试 |
实现发放奖品类
测试验证
模拟十次抽奖,结果:
2.2 增加需求
场景实例: 小葛参加Jd平台的抽奖活动,平台为了增加奖品的多样性,在原来只有一种奖品的情况下新增两种奖品,分别为Iphone12 和3000元现金
如果代码其余部分与现有类已经存在耦合关系, 那么向程序中添加新类其实并没有那么容易。
下面我们不使用设计模式的情况下,我们一般还用来实现需求,通过一个标志来表示小葛获得的奖品类型。
工程结构
类 | 功能 |
---|---|
AwardService | 模拟发放三种奖品 |
Test | 测试 |
实现发放奖品类
通过一个变量来表明小葛抽中哪一个奖品,并且发放相应的奖品。
测试验证
这里使用0 – 2的随机数来代表小葛抽中了具体哪种商品,测试结果
小结:
使用非常直接的实现了业务需求,如果只从产品需求来说,使用确实满足了需求,并且也能缩短上线的时间,但是这样简单粗暴的方式,在一定程度上给我们带来了便捷,但是也种下了一定的隐患。
- 当产品后续迭代时,需要引入更多的需求时,代码将变得臃肿;
- 并且也在一定程度上提高的重构代码的难度与成本;
- 一旦出现问题,测试所花的时间也会相应的增加。
那么,问题来了,我们怎么使用工厂模式来进行优化呢/p>
3 运用到简单工厂模式
使用简单工厂模式步骤:
-
创建抽象产品接口
-
创建具体产品类
-
创建工厂类
-
客户端调用工厂类
场景实例: 小葛参加Jd平台的抽奖活动,平台为了增加奖品的多样性,在原来只有一种奖品的情况下新增两种奖品,分别为Iphone12 和3000元现金
对上面使用的代码进行抽取,将其每个奖品发放的功能相应的抽取出来,然后使用一个工厂来决定发放哪一个奖品。
工程结构
我们创建一个发放奖品的接口()和发放奖品接口的实现类,并且使用来获取对象,从而实现奖品的发放。
类 | 功能 |
---|---|
AwardService | 奖品方法接口 |
CashAwardService | 模拟发放现金 |
IphoneAwardService | 模拟发放手机 |
MallCardAwardService | 模拟发放购物卡 |
AwardFactory | 发放奖品工厂 |
Test | 测试 |

实现发放奖品接口与其实现类
首先创建发放奖品的接口。
其次创建具体的发放奖品的实现类。
声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!