lottery
230323_lyq_strategy
infrastructure
相比上一章,增加多三个类,award(奖品) strategy(策略) strateDetail(策略明细),增加相应的dao
domain
使用ddd
strategy 是第1个在 domain 下实现的抽奖策略领域,在领域功能开发的服务下主要含有model、repository、service三块区域,接下来分别介绍下在抽奖领域中这三块区域都做了哪些事情。
model,用于提供vo、req、res 和 aggregates 聚合对象。
repository,提供仓储服务,其实也就是对Mysql、Redis等数据的统一包装。
service,是具体的业务领域逻辑实现层,在这个包下定义了algorithm抽奖算法实现和具体的抽奖策略包装 draw 层,对外提供抽奖接口 IDrawExec#doDrawExec
开发小册
学到的
VO层存在的意义,通俗的讲,VO层的存在就是方便前端获取数据,后端将前端的需要的数据做一个整合,打包成一个类
dto对象: 数据传输对象 把普通数据封装成bean
关于 PO、VO、DO、DTO
对象类型介绍
对象介绍
PO:persistent object 持久对象
有时也被称为Data对象,对应数据库中的entity,可以简单认为一个PO对应数据库中的一条记录。
在Mybatis持久化框架中与insert/delet操作密切相关。
PO中不应该包含任何对数据库的操作。
POJO :plain ordinary java object 无规则简单java对象
VO:value object 值对象 / view object 表现层对象
主要对应页面显示(web页面/swt、swing界面)的数据对象。
可以和表对应,也可以不,这根据业务的需要。
可以细分包括 req、res
DO(Domain Object):领域对象,就是从现实世界中抽象出来的有形或无形的业务实体。通常可以代替部分 PO 的职责。
DTO(TO):Data Transfer Object 数据传输对象
用在需要跨进程或远程传输时,它不应该包含业务逻辑。
比如一张表有100个字段,那么对应的PO就有100个属性(大多数情况下,DTO内的数据来自多个表)。但view层只需显示10个字段,没有必要把整个PO对象传递到client,这时我们就可以用只有这10个属性的DTO来传输数据到client,这样也不会暴露server端表结构。到达客户端以后,如果用这个对象来对应界面显示,那此时它的身份就转为VO。
HashMap containsKey() 方法:containsKey() 方法检查 hashMap 中是否存在指定的 key 对应的映射关系
@Resource和@Autowired注解都是用来实现依赖注入的。只是@AutoWried按by type自动注入,而@Resource默认按byName自动注入。
调试发现哪里不对了,就追进去,看它的具体方法,然后看mapper实现没

230323_lyq_subtractionStock
首先定义一个drawConfig,然后由抽奖支撑类来实现,然后这两个类交给抽象类,最后的业务实现交给实现类实现
遇到分支覆盖
项目右键 local history 找到之前的回去

浙公网安备 33010602011771号