关于本节的 VO 的两个问题

来源:5-6 商户投放子系统 - 服务接口值对象定义

Poplar_hills

2019-12-15

老师好,

关于本节的 VO 我有两个问题:

  1. 我们 ErrorCode 枚举类中居然有 SUCCESS 这个 code,code 的含义与枚举类的含义直接相悖,真心认为这不是个好的设计。如果说只是为了演示,那么咱们项目里“为了演示”而妥协的设计实在是不少,那么这门“实战”课程的意义在哪里呢?我认为更好的方式是,在代码中给出最优的实现,如果最优的实现比较复杂,在视频中来不及讲解,那么只要讲清楚设计思路即可,具体细节的解释可以让大家参考代码中的注释或文档,再不行还可以在群里讨论。

  2. 咱们在 PassTemplate 这个 VO 中定义了 validate 方法用于验证惠券的有效性,想问一下老师,这个 validate 方法为什么要放到 VO 中而不是优惠券的 service 中?VO 是用于在业务和服务之间传递对象的,在它上面定义功能性方法似乎不是很合适?


谢谢!


 

写回答

1回答

张勤一

2019-12-16

同学你好:

    我这里回答下你提出的两个问题。

    1. 在 ErrorCode 中定义 Success 是再正常不过的事情了,我在工作中的业务代码、开源代码等等,都会有这样的设计。可以思考,Success 不定义在这里,是单独拿到一个枚举类中定义一个枚举值吗?这又体现了什么呢 ?代码会显得很冗余,而且多了一个类定义。(其实,写代码,更多的是理解业务思想,而不在于具体的实现)

    2. 在 VO 中定义 validate 方法也是非常常见的设计,主要目的就是简单方便,且与 VO 自身贴合紧密。当然,写在 Service 中当然是可以的。但是,我似乎也说不出写在 Service 中好在哪里。


    欢迎来 QQ 群随时交流、讨论,也非常感谢同学的支持!

2
1
Poplar_hills
理解了,谢谢老师!
2019-12-17
共1条回复

Java分布式后台开发 Spring Boot+Kafka+HBase

从零到一完整搭建企业级架构的通用卡包工程,让你迈到百度T4+ 。

886 学习 · 221 问题

查看课程