设计模式(一)工厂模式

你能get到的知识点

  1. 工厂模式的介绍
  2. 工厂模式通过代码的实现

原文链接: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的随机数来代表小葛抽中了具体哪种商品,测试结果

小结:
使用非常直接的实现了业务需求,如果只从产品需求来说,使用确实满足了需求,并且也能缩短上线的时间,但是这样简单粗暴的方式,在一定程度上给我们带来了便捷,但是也种下了一定的隐患

  1. 当产品后续迭代时,需要引入更多的需求时,代码将变得臃肿;
  2. 并且也在一定程度上提高的重构代码的难度与成本;
  3. 一旦出现问题,测试所花的时间也会相应的增加。

那么,问题来了,我们怎么使用工厂模式来进行优化呢/p>

3 运用到简单工厂模式

使用简单工厂模式步骤:

  1. 创建抽象产品接口

  2. 创建具体产品类

  3. 创建工厂类

  4. 客户端调用工厂类

场景实例: 小葛参加Jd平台的抽奖活动,平台为了增加奖品的多样性,在原来只有一种奖品的情况下新增两种奖品,分别为Iphone12 和3000元现金

对上面使用的代码进行抽取,将其每个奖品发放的功能相应的抽取出来,然后使用一个工厂来决定发放哪一个奖品。

工程结构

我们创建一个发放奖品的接口()和发放奖品接口的实现类,并且使用来获取对象,从而实现奖品的发放。

功能
AwardService 奖品方法接口
CashAwardService 模拟发放现金
IphoneAwardService 模拟发放手机
MallCardAwardService 模拟发放购物卡
AwardFactory 发放奖品工厂
Test 测试

设计模式(一)工厂模式

实现发放奖品接口与其实现类
首先创建发放奖品的接口。
其次创建具体的发放奖品的实现类。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年8月1日
下一篇 2021年8月1日

相关推荐