2010年04月20日 14:48 "taochenpfj"的内容
是不是值得跟踪的那些对象就应该是实体,那么这些实体的存在周期,又该如何在系统中确认呢? ...
要分清哪些对象是实体或值对象,我觉得有两步可以参考:
1、从需求、业务分析入手,有业务ID(非数据库ID)的对象是实体,否则先暂时定为值对象
2、从类-类之间的关系入手,如果有一个类的对象是要依赖其父对象的存在而存在的,那么可暂时将其定为值对象。
3、值对象的信息一般在其生命周期内是不可变的
另外,实体或值对象的确定是一个随着分析和设计不断迭代而逐步清晰的过程,并且是根业务需求/业务场景密切相关的。比如客户、地址这两个类,在不同的系统中会有不同情况,举两个很粗的例子:
1、在一个电子商务系统中,有可能客户是实体,而地址是值对象。因为从分析得出地址不会单独存在,而是要依附在某个客户上,并且没有任何功能会从地址对象为起点。
2、在一个配送系统中,有可能客户是值对象,而地址是实体。因为配送系统关心的是货物和配送跟踪,而至于谁收货物则不是系统关心的东西。