ivaneeo's blog

自由的力量,自由的生活。

  BlogJava :: 首页 :: 联系 :: 聚合  :: 管理
  669 Posts :: 0 Stories :: 64 Comments :: 0 Trackbacks
动机(Motivation)
在分布系统和并发系统中,不可变的value object特别有用,因为你不须考虑它们的同步问题。

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

这里有必要澄清一下[不可变(immutable)]的意思。如果你以Money class表示[钱]的概念,其中有[币种]和[金额]两条信息,那么Money对象通常是一个不可变的value object。这并非意味你的薪资不能改变,而是意味:如果要改变你的薪资,你需要使用另一个崭新的Money对象来取代先有的Money对象,而不是在现有的Money对象上修改。你和Money对象之间的关系可以改变,但Money对象自身不能改变。
posted on 2005-09-05 10:34 ivaneeo 阅读(229) 评论(0)  编辑  收藏 所属分类: refactoring-从地狱中重生

只有注册用户登录后才能发表评论。


网站导航: