贫血领域模型之乐与怒

来源:互联网 发布:云雀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 ...没有哪个是不可或缺滴。架构中的细节以实践作为检验唯一标准,因敌势而制敌者,谓之神。
原创粉丝点击