具有许多字段的不同类型的实体-建模的最佳方法是什么?

时间:2019-01-04 08:45:54

标签: java oop

该主题比标题中的要复杂一些。 假设我们要对实体建模。这类似于KYC信息(名称,姓氏,地址等)。我可以在一个类中以简单的方式对此建模:

refresh_token

如您在上面的代码中看到的,此KYC可以是不同的类型。实际上,两个值可以属于该类型-商务性和个人性。对于企业来说,buisnessAddress字段是必填字段,而对于个人personalIdNumber是必填字段。另外,根据国家/地区字段,某些字段是必填字段。 public class KYCInfo { private KYCInfoType type; private String firstName; private String lastName; private Address personalAddress; private Address buisnessAddress; private String country; private String state; private LocalDate dateOfBirth; private String personalIdNumber; } 字段适用于美国,但不适用于欧洲国家。将所有这些字段放在一个类中似乎是不合适的-每个实例(取决于该字段)将具有很多空值。例如,我可以为StateBuisnessKYCInfo创建单独的类。但是然后我在字段中会有一些重复(假设IndividualKYCInfofirstName和其他两个字段对于这两个类都是相同的)。我可以使用公共字段创建一些抽象。喜欢:

lastName

现在想象一下,这是一个简单的DTO类,并且有一段时间我会以某种方法public abstract class KYCInfo { private String firstName; private String lastName; } 处理它。当我有两个类BuisnessKYCInfo processKYCInfo() IndividualKYCInfo andthen I would need to have two methods ``processKYCInfo(BuisnessKYCInfo kycInfo)时。此方法将执行相同的操作,但将从不同的字段收集信息。现在想象一下,您拥有比个人或筋疲力尽的类型。或者像我之前写的那样,另外的“类型”像processKYCInfo(IndividualKYCInfo kycInfo)一样出现。现在,我需要有25个国家/地区,其中一些国家/地区仅针对该国家/地区。使用与之前相同的方法,我将有25种方法几乎相同。这似乎也是不合适的。我还必须对此建模吗?也许有些数据结构,也许有些Map?这样做的最佳方法是什么?如何以更通用的方式做到这一点?

1 个答案:

答案 0 :(得分:0)

这是我的方法:

以下是我将使用的数据结构:-

android:layout_gravity="end"

那么这种方法的优势是什么:-

  • 创建族而不是创建多个相同类型的属性。例如名称将是“ firstName”,“ middleName”,“ lastName”的族。该对将类似于<'firstName','Bob'>,<'lastName','Marley'>等。通过这种方式,您可以拥有一个或全部。
  • 类似于其他属性,例如地址。这对可以像<'personalAddress','some value'>,<'buisnessAddress','some value'>
  • 每条记录可以有一个家庭类别。