【发布时间】:2020-10-21 20:29:23
【问题描述】:
我有一个类,我希望重构看起来像这样:
class PersonId {
String personId
//getter, setter
}
class Person{
PersonId personId;
//other fields...
}
在我看来,PersonId 类是不必要的,因为它只包含一个带有 id 值的字符串字段。实际上,这个字符串字段可以直接放在 Person 类中。 是否有类设计的基本规则,允许类“PersonId”? 哪个缺点有一个“PersionId”类?
【问题讨论】:
-
这些类是从哪里来的,是你设计的还是来自某个应用程序/系统?不知道背景很难给出答案,但如果忽略历史,显而易见的答案是跳过 PersonID 类。
-
它不是我的,我只是看到它,对我来说似乎没有用。我甚至使模型更加复杂。所以我想知道,如果有一些类设计规则,这表明这样做是一种不好的做法
-
我很确定这没有设计规则,更多的是常识性的解决方案。
-
对我来说似乎是一个额外的步骤,尽管我不知道它的背景。它是否被多个类扩展,然后向下转换已用于对 Person id 的控制反转?因为可能使用spring的方式,个人ID可以根据使用情况有不同的类型?即使在那种情况下,我也假设某个地方有一个派生类,它不仅仅是一个字符串。
-
阅读
Value objects,例如这里value-objects-to-the-rescue或这里the-forgotten-value-of-value-objects