banq大哥你好!你说ForumThreadState是值对象,但是:
1.“值对象是不可变的,不要给它任何标识,避免实体的维护性,降低设计复杂性。我们不关心值对象是哪个实例。”,好像ForumThreadState是可变的,有set方法,而且每次回复后,都会重新去数据库统计一下。不过再细看代码,在refreshState的时候是new了一个ForumThreadState,就是说重新生成了新的ForumThreadState。ForumThreadState好像在性能方面也没发现有什么优点,不具备值对象的特点。
2.每次都要根据forumThread才能确定ForumThreadState,所以我们要关心ForumThreadState是哪个forumThread的对象,这跟DDD里面说的“只关心它们是什么,而不关心它们谁是谁的对象”相违背。
3.假如ForumThreadState是值对象,具有不变性,那应该可以共享啊,但是每个forumThread
实体的ForumThreadState都不同的,不能共享,矛盾。
4.不清楚把ForumThreadState设计成值对象的好处在哪里。
上面问题我一直很迷惑,对值对象的概念没完全理解,网上找了相关文章,有举了货币转换的例子,看了懂了,但一回到ForumThreadState,又迷惑了,请banq老师指导,谢谢!!