重构三--重新组织数据(Change Value to Reference)(2)--动机

重构三--重新组织数据(Change Value to Reference)(2)--动机
动机(Motivation)
在许多系统中,你都可以对对象做一个有用的分类: reference object和 value objects。前者就像[客户]、[帐户]这样的东西,每个对象都代表真实世界中的一个实物,你可以直接以相等操作符(==,用来检验同一性, identity)检查两个对象是否相等。后者则是像[日期]、[钱]这样的东西,它们完全由其所含的数据值来定义,你并不在意副本的存在;系统中或许存 在成百上千个内容为“1/1/2000”的[日期]对象。当然,你也需要知道两个 value objects是否相等,所以你需要覆写equals()(以及hashCode())。


要在 reference object和 value object之间做选择有时并不容易。有时侯,你会从一个简单的 value object开始,在其中保存少量不可修改的数据。而后,你可能会希望给这个对象加入一些可修改数据,并确保对任何一个对象的修改都能影响到所有引用此一对象的地方。这时候你就需要将这个对象变成一个 reference object。

你可能感兴趣的:(重构三--重新组织数据(Change Value to Reference)(2)--动机)