# 第07节:简单工厂搭建发奖领域

作者:小傅哥
博客:https://bugstack.cn (opens new window)

沉淀、分享、成长,让自己和他人都能有所收获!

# 零、优秀作业

# 一、开发日志

  • 下载安装 Navicat Premium 15.0.30 (opens new window)
  • 按照 Mysql 库表使用规范调整表字段名称,如 activityId 调整为 activity_id,涉及改造的表包括:activityawardstrategystrategy_detail 新的建表语句和初始化数据已更新到 doc/assert/sql/lottery.sql (opens new window)
  • 继续按照 P3C 标准,在 IDEA 插件 Alibaba Java Coding Guidelines 提醒下,修改所有涉及到的领域层、基础层中类、方法、字段的注释信息。
  • 【重要】运用简单工厂设计模式,搭建发奖领域服务。介绍:定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。

# 二、发奖领域服务实现

截止到目前我们开发实现的都是关于 domain 领域层的建设,当各项核心的领域服务开发完成以后,则会在 application 层做服务编排流程处理的开发。例如:从用户参与抽奖活动、过滤规则、执行抽奖、存放结果、发送奖品等内容的链路处理。涉及的领域如下:

图 7-1

# 1. 工程结构

lottery-domain
└── src
    └── main
        └── java
            └── cn.itedus.lottery.domain.award
                ├── model
                ├── repository
                │   ├── impl
                │   │   └── AwardRepository
                │   └── IAwardRepository
                └── service
                    ├── factory
                    │   ├── DistributionGoodsFactory.java
                    │   └── GoodsConfig.java
                    └── goods
                        ├── impl
                        │   ├── CouponGoods.java
                        │   ├── DescGoods.java
                        │   ├── PhysicalGoods.java
                        │   └── RedeemCodeGoods.java
                        ├── DistributionBase.java
                        └── IDistributionGoodsc.java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
  • 关于 award 发奖领域中主要的核心实现在于 service 中的两块功能逻辑实现,分别是:goods 商品处理factory 工厂🏭
  • goods:包装适配各类奖品的发放逻辑,虽然我们目前的抽奖系统仅是给用户返回一个中奖描述,但在实际的业务场景中,是真实的调用优惠券、兑换码、物流发货等操作,而这些内容经过封装后就可以在自己的商品类下实现了。