Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 只有一个字符串字段的模型类_Java_Class_Field - Fatal编程技术网

Java 只有一个字符串字段的模型类

Java 只有一个字符串字段的模型类,java,class,field,Java,Class,Field,我有一个类,我希望重构如下: class PersonId { String personId //getter, setter } class Person{ PersonId personId; //other fields... } 对我来说,类PersonId似乎是不必要的,因为它只包含一个id值为的字符串字段。实际上,这个字符串字段可以直接放在类Person中。 类设计是否有允许类“PersonId”的基本规则? 哪个缺点有类“PersonId”?据我

我有一个类,我希望重构如下:

class PersonId {
    String personId
    //getter, setter
}

class Person{

   PersonId personId;
   //other fields...
}
对我来说,类PersonId似乎是不必要的,因为它只包含一个id值为的字符串字段。实际上,这个字符串字段可以直接放在类Person中。 类设计是否有允许类“PersonId”的基本规则?
哪个缺点有类“PersonId”?

据我所知,如果您的类PersonId仅包含此字符串,那么您可以将其直接放在Person类中。另一方面,如果您的类包含的内容不止这些(方法或更多属性),那么它是有用的

那么我能看到的唯一优势是,您可以将同一个PersonId赋予多个PersonId,如果您修改一个,那么它将修改其他PersonId:

Person p1 = new Person();
Person p2 = new Person();
PersonId id = new PersonId();
id.id = "abc";
p1.id = id;
p2.id = id;
System.out.println(p1.id.id); // abc (for p1 & p2)
id.id = "foo";
System.out.println(p1.id.id); // foo (for p1 & p2)
id.id = "ba";
System.out.println(p2.id.id); // ba (for p1 & p2)

这些类来自哪里,是您设计的还是来自某个应用程序/系统?在不了解背景的情况下很难给出答案,但如果忽视历史,最明显的答案是跳过PersonID类。这不是我的,我只看到它,对我来说似乎没有什么用处。我甚至使模型更复杂。所以我想知道,如果有一些类设计的规则,这表明,像这样做是一种不好的做法,我很确定这没有设计规则,更像是一个常识性的解决方案。看起来对我来说是一个额外的步骤,尽管我不知道它的背景。它是否经过多个类的扩展,然后向下投射用于反转个人id的控制?因为使用spring的方式,个人id可以根据使用情况有不同的类型?即使在这种情况下,我也假设某个地方有一个派生类,它不只是一个字符串