【发布时间】:2018-07-17 13:55:49
【问题描述】:
举个例子:
class Person {
Integer age
String lastName
String firstName
}
age 属性应受限于特定的验证规则:
- 高于 0
lastName 和 firstName 相同:
- 这些字符串不应包含特殊字符(例如数字、下划线、...)
- 长度应 > 0
为了抽象出这个验证策略,我是否应该创建诸如age和name之类的值对象来封装验证:
class Age {
Integer value
}
class Name {
String value
}
class Person {
Name lastName
Name firstName
Age age
}
确实,我也可以保持代码 DRY 并重用我的值对象,但这似乎是“过度抽象”
【问题讨论】:
标签: oop domain-driven-design abstraction value-objects