值对象是不可变的?

08-04-10 r7raul
值对象是不可变的是不是指值对象的属性不可更改想JAVA的STRING不变类一样?那为啥ForumThreadState中有setXXX()的方法呢?

r7raul
2008-04-10 14:19
值对象是不是就是不变类的对象?

r7raul
2008-04-10 14:19
值对象是不是就是不变类的对象?

r7raul
2008-04-10 14:23
为啥不把ForumThreadState设计成不变类呢?属性都是FINAL的,从数据库中读出数据后直接用构造函数设值,这样不是更彻底的不变吗?

只有GET方法没SET方法

[该贴被r7raul于2008-04-10 14:24修改过]

pub
2008-04-10 15:01
好。。。。。。。。

r7raul
2008-04-10 17:12
我看了论坛刷新的时候每次都NEW 了一个forumState,为啥不共享一个forumState呢?还有forumState不需要持久化到数据库中,它的生命周期啥时候结束?与客户类的值对象地址有啥区别?值对象地址是要持久化的?

pub
2008-04-10 17:56
1.刷新是一个技术上的要求和共享的语义不一样。

2.forumState的生命周期不同于forum,随时都有可能结束 并生成新的forumstate.

3.值对象和持久到数据库中没有多少关系。只要注意new 完后更新一次后不再更新

4.值对象共享结合Flyweight。

5.如果有共享要求,像forumState一样存在多个属性的话不利于共享 ?

pub
2008-04-11 21:27

banq
2008-04-14 09:13
pub基本正确

值对象不可变的意思和主要指其生命周期的一致性,并不是说技术上不能修改

猜你喜欢