互相包含

==由于ForumThread中ForumMessage和ForumMessage中ForumThread互相包含,怎样确保它们互相包含的==对象都是从缓存里获得同一个实例呢?
ddd中都是建议从根开始找对象.如果互相包含会不会和ddd相冲突?

这里是有一些歧义,ForumMessage其实分两种类型:RootForumMessage和ReplyForumMessage。对于RootForumMessage,RootForumMessage和ForumThread是一致的,ForumThread中的ForumMessage其实实质是RootForumMessage,不是ReplyForumMessage。

因此,ReplyForumMessage只是单向指向了ForumThread,这个意义上不是互相包含。

这里根对象应该是RootForumMessage和ForumThread,那么如何确保ForumThread是唯一的单例,通过缓存来确保,因为缓存中总是保持唯一一个ForumThread,只要我们在工厂源头控制住,不要保存多个ForumThread实例到缓存中即可,这里面有多线程环境也要考虑。