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

重构三--重新组织数据(Change Reference to value)(2)--动机
动机(Motivation)
在分布系统和并发系统中,不可变的 value object特别有用,因为你不须考虑它们的同步问题。

value object有一个非常重要的特性:它们应该是不可变的(immutable)。无论何时只要你调用同一个对象的同一个查询函数,你都应该得到同样结果。如果保证了这一点,就可以放心地以多个对象表示相同事物(same thing)。如果 value object是可变的(mutable),你就必须确保你对某一对象的修改会自动更新其他[代表同事物]的其他对象。这太痛苦了,与其如此还不如把它变成 reference object。

这里有必要澄清一下[不可变(immutable)]的意思。如果你以 Money class表示[钱]的概念,其中有[币种]和[金额]两条信息,那么 Money对象通常是一个不可变的 value object。这并非意味你的薪资不能改变,而是意味:如果要改变你的薪资,你需要使用另一个崭新的 Money对象来取代先有的 Money对象,而不是在现有的 Money对象上修改。你和 Money对象之间的关系可以改变,但 Money对象自身不能改变。

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