一个对象设计问题,求帮助。

在JiveJdon 中 Forum 与 ForumThread 是聚合关系,Forum 是聚合根。
为什么在Forum代码上却看不出它与FourmThread的关联,只在ForumThread体现与Forum的关联?

我还有好些个关于确定对象间关系的问题,整理下 不开新贴 修改到这个贴子上,求帮助。
-----------------------------------------------------------------------------
我是做行业软件(电力教育相关)的,近期想对一个系统重新开发。项目大致有这几个方面:年度计划、培训实施、证书管理等。

1.计划中有一个计划类别说明这个计划属于什么类别的,比如“XXXX培训”计划 属于管理人员培训-->金融财务审计中的计划。
在原设计中像这些类别类的信息都来自一个叫CODE的表 对应到系统中的一个XxxCodeBean中,计划对象中保存xxxCodeBean的id. 对象间的关系都是从数据库的主外键上去看的,没有引用依赖 或者说都没有对象关系。
我想重新设计对象及对象间的关系(聚合关系),计划类别、计划、实施三者的关系为 1-->N-->N。计划必须有计划类别,实施必须有计划。这里适不适合设计成聚合关系将计划类别确定为聚合根?

[该贴被cgttian于2011-06-17 15:00修改过]

2011年06月17日 11:31 "@cgttian"的内容
这里适不适合设计成聚合关系将计划类别确定为聚合根? ...

貌似可以,自己尝试一下吧

画了一张草图,第一次画 可能用的图例还有很多问题。



TrainingClass(培训实施-培训班) 是重点 主要的业务工作都围绕其开展,就如同ForumMessage。

TrainingClass 有多个状态(流程) 如下图:



在一个特定状态中 完成一个特定业务功能。

像这种有流程状态的对象 应该在建模时就考虑进来吗? 该怎样设计?

可能我还没写清楚问题 因为还是觉得混乱。
继续努力 有新进展再贴上来 请各位指导。

从类图来看,基本是这样,可以看出,你这个系统是以状态图为主要特点。

从所有音乐系统高度来看,基本可以分为三种偏重:
1.偏重类图,这样的系统有复杂多变的类关系,我们使用DDD来破解。

2.偏重用例图:这样的系统有复杂多变的行为事件,我们使用DCI来实现。

3.偏重状态图:这样的系统有复杂多变的流程和状态,我们使用状态存储数据库来实现。

可以说,不同的系统目前都已经有了相应特点的实现之道了。

2011年06月22日 09:38 "@banq"的内容
这个系统是以状态图为主要特点。这样的系统有复杂多变的行为事件,使用状态存储数据库来实现...

说实话我不大明白,是说这样的系统最好还是按老路 以数据库为中心?
有没有一些类似系统的设计 实现推荐...

2011年06月22日 09:38 "@banq"的内容
3.偏重状态图:这样的系统有复杂多变的流程和状态,我们使用状态存储数据库来实现。 ...

我个人感觉 3 也可以用 1来完成,只是3在简单逻辑快速开发时,性价比较高。


其实状态就是实体的状态,而状态迁移是发生在事件中。所以即使是状态机,也可用为1、2或者1和2的结合体来理解。

2011年06月22日 09:56 "@cgttian"的内容
是说这样的系统最好还是按老路 以数据库为中心 ...

就你现在画的这些图,是以状态图为主,需要一种面向状态的架构,初期使用数据库即可,发展后来可使用工作流等。

不是说,使用数据库就不是OO,关键是切分思维:
什么叫对象?就是你对着象就可以,如果你把类当作对象,那么就是面向类的OO,如Java/C++/C#;如果你把方法函数当作对象,那么就是面向函数的OO,如Scala;如果你把状态当作对象,那么就是面向状态的OO(如果说数据库是存储状态,那么面向数据库是OO的最低级形式)

2011年06月22日 14:07 "@banq"的内容
需要一种面向状态的架构,初期使用数据库即可,发展后来可使用工作流 ...

记得在论坛里有人提到过流水线,我现在也想起流水线了。就好比一条生产汽车的流水线: 车的框架-->装入发动机-->装内饰-->... 直至出产。
这样看来 关注点就落在了流水线的每个环节(流程)上,车成了只是每个环节密切合作后的产物。
虽然关注点落在了流程上,但是 我想其要产出的产品(对象) 也应当是个富对象。 就比如 车上能坐多少人(培训班: 有多少个单位、多少人参培)、是什么类型的车(培训班:是哪种类型的培训班) 等等...
2011年06月22日 14:07 "@banq"的内容
键是切分思维 ...

看我发的、回复的贴子 就知道我现在还是处在很混乱的思维当中.
切分思维 对我来说还是无从谈起 甚至不知道 什么是切分思维.
继续努力 在论坛里看看相关的帖子...