如果我有一个具有复杂对象树的表单支持对象 - 比如一个具有Contact Info对象的Person,该对象具有一堆具有一串字符串的Address对象 - 似乎该对象需要完全填充组件我可以绑定它之前的对象.因此,如果我正在创建一个新的Person,我需要确保它已经从bat中填充了所有组件对象,如果我从数据库中检索Person,我需要确保任何不是的对象从数据库填充后填充空对象.
第一个问题,当然 - 我的上述假设是否正确?似乎如果我尝试绑定到person.contactInfo.homeAddress.street并且没有ContactInfo,我会得到一个空指针异常.
其次,初始化对象的最佳方法是什么.我可以想到几种方法.一种是在声明时初始化所有成员对象:
public class Person { String name; ContactInfo contactInfo = new ContactInfo(); //getters, setters, etc. } public class ContactInfo { String phone; Address homeAddress = new Address(); }
等等.
另一种方法是让PersonFactory初始化所有东西(或者有一个初始化所有东西的工厂方法Person.getInstance).
在从数据库中检索Person的情况下,第一种方法将解决问题(即,如果此特定人员在数据库中没有地址,则该对象仍将具有地址),但这将意味着创建每个对象两次.不知道如何处理这个问题,除非使DAO显式填充所有内容,即使从数据库中没有检索到任何内容.或者给工厂一个方法来浏览对象并"填写"任何缺失的东西.
建议?