贫血领域模型之乐与怒
来源:互联网 发布:云雀360网络打印机 编辑:程序博客网 时间:2024/05/16 19:42
还是Martin Fowler的PEAA一书读后引起的余震,此书确实发人深省。
贫血Domain Model,"在这个领域空间里,有一堆以名词命名的对象。这些对象之间也同样存在丰富的关联结构,就如同真正的领域模型一样。但是,这些对象所拥有的行为太少了。领域逻辑放在Service Layer中,并通过领域对象存取数据库。"(引自点空间)
Martin Fowler旗帜鲜明地反对它,其理由是:“基本上,贫血的领域模型的问题是,它付出了领域模型的所有成本,却没有产出任何收益”,这里的成本,主要来自模型和关系数据库之间的接口,必须额外使用orm工具。真正的领域模型的收益又是什么呢?从宏观上说是可以应付复杂的业务逻辑需求,微观上嘛,可以使用继承和多态等面向对象的特征,将数据和行为良好封装,从而产生一个OO爱好者所唯美追求的设计?
以下是我个人的一点想法,即“窃以为”:
贫血模型接近一个静态数据模型(E-R模型,或Powerdesigner出产的cdm),如果这个数据库设计最大程度地接近OO的思路来的(一种可持久化存储方案),那么orm的成本并不高,如果使用真正结合了行为的领域模型,使用了复杂的设计模式,势必加入很多辅助类,控制类,这样获得了业务处理上的灵活性,很好地满足了开闭原则,但在和数据库的映射上麻烦增加了,贫血模型本身无罪,应该视实际需求及本身设计能力而选择,我所遇到的项目(包括其他公司),有80%都使用事务脚本型架构和贫血模型,相当多的成功案例。 一切以需求为准,OO原则充分考虑,struts webwork spring hibernate ...没有哪个是不可或缺滴。架构中的细节以实践作为检验唯一标准,因敌势而制敌者,谓之神。
贫血Domain Model,"在这个领域空间里,有一堆以名词命名的对象。这些对象之间也同样存在丰富的关联结构,就如同真正的领域模型一样。但是,这些对象所拥有的行为太少了。领域逻辑放在Service Layer中,并通过领域对象存取数据库。"(引自点空间)
Martin Fowler旗帜鲜明地反对它,其理由是:“基本上,贫血的领域模型的问题是,它付出了领域模型的所有成本,却没有产出任何收益”,这里的成本,主要来自模型和关系数据库之间的接口,必须额外使用orm工具。真正的领域模型的收益又是什么呢?从宏观上说是可以应付复杂的业务逻辑需求,微观上嘛,可以使用继承和多态等面向对象的特征,将数据和行为良好封装,从而产生一个OO爱好者所唯美追求的设计?
以下是我个人的一点想法,即“窃以为”:
贫血模型接近一个静态数据模型(E-R模型,或Powerdesigner出产的cdm),如果这个数据库设计最大程度地接近OO的思路来的(一种可持久化存储方案),那么orm的成本并不高,如果使用真正结合了行为的领域模型,使用了复杂的设计模式,势必加入很多辅助类,控制类,这样获得了业务处理上的灵活性,很好地满足了开闭原则,但在和数据库的映射上麻烦增加了,贫血模型本身无罪,应该视实际需求及本身设计能力而选择,我所遇到的项目(包括其他公司),有80%都使用事务脚本型架构和贫血模型,相当多的成功案例。 一切以需求为准,OO原则充分考虑,struts webwork spring hibernate ...没有哪个是不可或缺滴。架构中的细节以实践作为检验唯一标准,因敌势而制敌者,谓之神。
- 贫血领域模型之乐与怒
- 领域模型、贫血模型
- 贫血模型与领域架构模式
- 贫血领域模型
- 贫血模型or领域模型
- 贫血模型or领域模型
- 领域模型,贫血模型,充血模型
- 贫血模型与充血模型
- 谈谈领域模型--贫血还是充血?
- 领域模型(概念模型) 、逻辑模型、物理模型、贫血模型、充血模型概念总结【待读与标记】
- 从贫血领域模型到丰富领域模型
- 领域模型、贫血模型、充血模型概念总结
- 领域模型、贫血模型、充血模型概念总结
- 浅析:领域模型、贫血模型和充血模型
- 一个简单例子:贫血模型or领域模型
- (转)一个简单例子:贫血模型or领域模型
- 一个简单例子:贫血模型or领域模型
- 一个简单例子:贫血模型or领域模型
- hoho
- 高级程序员考试英语试题详解(2000~2002)
- 装kmess到make的时候总是出错
- 又要开始干老本行了 :(
- 01.23.2005 综体/展览馆打球日记
- 贫血领域模型之乐与怒
- 我的龙族
- 同济大学软件学院万院长谈择业
- 最精简的小写金额转大写的函数
- 国内外的一些C++/VC++技术站点
- 不与钱财过不去 揭密五年成大富翁的六大法则
- 看深圳女人的爱情恐慌有感(转)
- 利用CSS实现竖排文字文字效果
- 关于C中文件操作的问题