代码之家  ›  专栏  ›  技术社区  ›  Artur Skrzydło

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

  •  0
  • Artur Skrzydło  · 技术社区  · 5 年前

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

    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;
    }
    

    State 这个领域是为我们而不是为欧洲国家。将所有这些字段放在一个类中似乎不合适-每个实例(取决于字段)都有很多空值。我可以为 BuisnessKYCInfo IndividualKYCInfo 例如。但是我会在田野里做一些复制品 firstName , lastName 其他一些字段对于这两个类都是相同的)。我可以用公共字段创建一些抽象。比如:

    public abstract class KYCInfo {
    
        private String firstName;
        private String lastName;
    } 
    

    processKYCInfo() . 当我有两个班的时候 and 个体KYCINFO then I would need to have two methods ``processKYCInfo(BuisnessKYCInfo kycInfo) processKYCInfo(IndividualKYCInfo kycInfo) . 此方法将执行相同的操作,但将从不同字段收集信息。现在想象一下,你有更多的类型,而不是个人或商业。或者如我之前所写,额外的“类型”是 country

    1 回复  |  直到 5 年前
        1
  •  0
  •   abhishek chaurasiya    5 年前

    我的方法是:

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

      public class KYCInfo {
          private KYCInfoType type;
          private Map<String, String> name;
          private Map<String, String> address;
          private String country;
          private String state;
          private LocalDate dateOfBirth;
          private String personalIdNumber;
          public KYCInfo(){
              name = new HashMap<>();
              address = new HashMap<>();
      }
    

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

    • 创建族而不是创建多个相同类型的属性。e、 g.name将是“firstName”、“middleName”、“lastName”的系列。这一对像<'firstName'、'Bob'>、<'lastName'、'Marley'>等,这样你就可以拥有其中一个或全部。
    • 每个记录对于一个族都可以有自己的类别。