跳至主要內容

- 主页

- Lottery 项目开发日志

  - Day01
  - Day02
  - Day03
    - day03
      - 任务
      - 学习过程
      - 遇到的问题
      - 总结
  - Day04
  - Day05
  - Day06
  - Day07 ~ Day08
  - Day09 ~ Day10
  - Day011
  - Day012

# Day03

小傅哥
大约 40 分钟
开发笔记学习记录

此页内容

- day03
- - 任务
  - 学习过程
  - 遇到的问题
  - 总结

## # day03

### # 任务

- [x] 模板模式处理抽奖流程

### # 学习过程

1. 因为之前没学过设计模式，先学一学模板模式，用到一种学一种，哈哈哈

2. 先看一下整个抽奖流程

   抽奖过程

3. 了解了抽奖流程之后就开始写代码

   1. 先写对应的 dao 层

      1. 要查策略吧？写个策略的 Mapper
      2. 要查策略详情吧？写个策略详情的 Mapper
      3. 要查奖品吧？要减奖品库存吧？要查没库存的奖品吧？写个奖品的 Mapper

   2. 然后实现 repository 层

      这里主要是调 Mapper 将结果进行聚合封装

   3. 使用模板模式设计抽奖过程代码

      1. 顶层接口规定抽奖的入参出参
      2. 加一层 Config 把抽奖策略进行统一录入
      3. 配置完成后需要调用基础服务比如 repository 层，所以加一层基础支持
      4. 然后来一个抽象类，在这里实现接口的抽奖，抽奖接口里面写抽奖的流程，然后具体的方法交给子类实现
      5. 实现抽象类

   4. 测试

### # 遇到的问题

相对于前两天，今天的内容算容易的，因为只有一个模板设计模式没学过，只要理清了思路、理清代码执行流程，今天应该算容易的

1. 空指针 bug

   今天太晚了，先注销那个判断吧，待会儿搞完又不想睡觉了，后面也会解决这个 bug 吧，先睡觉咯 `:TODO`

### # 总结

今天主要就两件事，先学习模板设计模式，然后使用模板设计模式来组织抽奖流程，主要就是通过一系列的封装，把公用的代码提取出来，比如配置、执行流程、以及公用仓储服务，然后把接口留给实现类而达到同一套代码，不同的处理方法

收获：

1. 今天对于前两天来说，对于包的组织架构以及 DDD 有了更深的理解，很明显的感觉到知道代码该写在哪了，找包都比前两天快
2. 学习了模板模式，知道了模板模式的代码应该怎样组织，突然感觉那种设计模式大牛真的能把封装继承多态玩出花，有了设计模式，代码的扩展性提高了很多