>我现在比较困惑的是实体映射到关系时,灵活度需要达到多少才合适
关联关系尽可能少,能够没有最好,考虑设计关系尽量从谨慎扼杀角度出发。要反复推敲每个你设立的关联关系,不要随便设立关联。
>实体和服务的职责划分 ,哪些操作要放到实体里,哪些要丢到服务中
这个我在另外一个帖子中也提到:必须判断哪些特征是属于该对象固有基本的;哪些则不是,哪些和应用特征相关的服务性质,比如人存取款这个动作特征,其实和具体应用有关,而不是人对象固有基本的。
这里就有两个极端:一个是将所有操作都放在实体中,如2001年的Jive2.5设计就是这样,最后带来弊端就是每个实体对象很复杂;还有另外一个极端就是实体中没有任何操作,这是MF的批评的失血模型,贫血模型。过去有人当听到MF批评失血模型时,就开始将实体的save等操作放在实体中,这个我个人认为不妥,save属于对象持久化,属于对象生命周期的管理维护动作,一个对象不能自己对自己生命周期进行管理维护,这其实是很正常日常生活常识,我们人都是由父母给予生命的,不可能自己创建自己,万事万物的生命都不是它自己创建的,或它自己来管理维护。
但是,无论哪一种,都和数据库模型毫无关系的,现在又推出一种非数据库,但是也非领域模型的模型设计,他就以网站社区为案例,提出:“我明白Martin在这个主题上的观点,他说要把更多的逻辑关系放到领域模型里,但是如果你的领域模型里不需要任何逻辑,而只是存取数据呢?”
中文翻译:
http://docman.cn/dm/doc.php?id=21
原文网址:
http://thebull.macsimumweb.com/building-a-high-volume-app-without-a-rdms-or-domain-objects/
[该贴被banq于2007年06月27日 10:23修改过]