基于Spring,struts,hibernate的JYazd仿yazd及jivejdon

声明:出于学习的目的.本文大部分复制于jivejdo forumn的开发文档,修改的内容是技术实现,以及部分设计上的修改.

  1. 分析设计

用例图:

角色设计:Anonymous普通用户;注册用户User;管理者Admin;

普通用户用例功能:

浏览所有论坛;

浏览所有帖子;

浏览其他用户信息;

建模:

从用例图中可以发现,模型有Account(用户),Forum(论坛),ForumMessage(帖子). 论坛和帖子之间其实也存在这样一个集合概念:FourmThread,如下:

ForumThread相当于主题Topic; 但Topic主要内容放入rootMessage中,可以说相当于所有rootMessage的主题提要,包括回复rootMessage的最后的一个回帖,包括rootMessage在内的所有帖子数等,主要服务于显示一个论坛中所有rootMessage集合。

ForumThread和Forum之间是N:1关系ForumMessage相当于帖子;ForumMessage之间有一个父子关系,表示帖子之间回帖关系;ForumMessage和ForumThread之间是N:1关系,和Forum之间也是N:1关系。

领域模型图如下:

Evans DDD在领域对象的生命周期中对不变性(invariant)进行了定义,指无论何时数据发生变化,都必须满足所有对象一致变化的规则。

围绕ForumMessage,其组成部分Fourm ForumThread Account都是其核心部分,就像汽车由发动机 车身 轮胎组成一样,缺一不可。特别是ForumThread和ForumMessage,更是这种不变性的高度统一,ForumThread实则是虚的,它里面实体就是ForumMessage,两者是高度一致的。

DDD指出;聚合内部的不变量必须在每次事务完成时满足。这可有仓储来实现。

当然,还有一些依赖关系只能在某些特定的时刻,通过事件处理、批处理和其他更新机制来实现,比如上图中state和tag 以及property。

 

 

 

 

 

posted @ 2010-03-12 09:17  东苑草根  阅读(253)  评论(0编辑  收藏  举报
手牵手 一步两步三步 往上爬