JAVA填充POJO void方法和返回字段的方法哪个更好?
JAVA 1.8 从另一个类“人””填充类“客户””最可读/有效的方法是什么 AddressInfo、ContactPreferences和AuthorizationRoles都是具有多个字段的复杂POJO,我们需要进行额外的数据库调用和服务调用JAVA填充POJO void方法和返回字段的方法哪个更好?,java,jakarta-ee,memory-management,coding-style,pojo,Java,Jakarta Ee,Memory Management,Coding Style,Pojo,JAVA 1.8 从另一个类“人””填充类“客户””最可读/有效的方法是什么 AddressInfo、ContactPreferences和AuthorizationRoles都是具有多个字段的复杂POJO,我们需要进行额外的数据库调用和服务调用 public Customer getCustomerFromPerson(Person per) { Customer cust = new Customer(); populateAddressInfo(cust, per); populate
public Customer getCustomerFromPerson(Person per) {
Customer cust = new Customer();
populateAddressInfo(cust, per);
populateContactPreferences(cust, per);
populateAuthorizationRoles(cust, per);
...
return cust;
}
vs
注:
Customer.AddressInfo!=Person.AddressInfo。它们是非常小的映射,我们从DB/Soap中提取额外的数据以获得完整的Customer.Addressinfo
cust.getAddressInfo.setIsBillingAddress(Webservicecall(per.getAddressInfo)) 我建议您看看Apache
BeanUtils.copyProperties
public static void copyProperties(Object dest, Object orig)
throws IllegalAccessException, InvocationTargetException
它可能会更快地完成您想要的任务,尽管类型安全性和性能可能会受到惩罚
链接:为什么您的联系人没有getter,例如person.GetAddressInfo?您解释的方法是,在每次调用populate*()返回新客户之前,使用不同名称的setter。我认为将其保留为setter会使其更具可读性。亲自提供的地址信息是客户所需的完整地址信息,即cust.getAddressInfo!=per.getAddressInfo。Customer.AddressInfo需要更多信息、类型转换,可能还需要额外的服务调用以及所有亲自提供的数据。AddressInfo您可以实现一个构建器模式,客户和个人之间很少有一对一的映射,因此这不是一个很好的匹配。客户需要大量附加数据才能完成,谢谢
public static void copyProperties(Object dest, Object orig)
throws IllegalAccessException, InvocationTargetException