论坛首页 Java企业应用论坛

贫血就贫血,咂地?

浏览 54125 次
精华帖 (1) :: 良好帖 (0) :: 新手帖 (1) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-10-31  
今天和thoughtworks的一个同学讨论了一下,据他说,他们并不在domain object里面包含persistence logic。某种意义上说,domain object虽然有业务逻辑,但是更多的都是计算或者纯逻辑的东西。持久化还是通过session.save(obj)来做的。

这样的话,我倒是对这个充血模型没那么反感了。虽然我还是不喜欢那种需要额外注射依赖的充血模型。

至于怎么样比较好地给这些充血模型注射依赖,我这里刚写了一篇文章,大家可以看看这个方法如何:http://docs.codehaus.org/display/YAN/Dependency+Injection+For+Rich+Domain+Objects

再对比
http://forum.springframework.org/showthread.php?t=19098以及xiecc同学的那个类似的方法。

本来要在javaeye的confluence里面写篇中文的,但是似乎server down了。
0 请登录后投票
   发表时间:2005-10-31  
ajoo 写道

你仔细读读martin的原文吧。除了“这不OO”,我还真没看见他给出什么有力的论据。


我画了Matin同志的抉择依据,见附件。

BTW:在Matin眼力,分层结构也就这么三种。呵呵,画符骗钱也未可知?
0 请登录后投票
   发表时间:2005-10-31  
有什么好战的,该贫的地方就贫,该富的地方就富,一个复杂系统当中必然有复杂任务,也有简单任务,用任何单一模型去套整个系统都是削足適履,还不如将这些模型挥洒自如任意搭配来的痛快。
0 请登录后投票
   发表时间:2005-10-31  
age0 写道
有什么好战的,该贫的地方就贫,该富的地方就富,一个复杂系统当中必然有复杂任务,也有简单任务,用任何单一模型去套整个系统都是削足適履,还不如将这些模型挥洒自如任意搭配来的痛快。

废话多你一个不多,少你一个不少。
0 请登录后投票
   发表时间:2005-10-31  
老马不是说过,何时使用领域模型完全取决于系统中行为的复杂度。如果你的业务规则很复杂,涉及到很多方面,就应该用领域模型。如果只是一些简单的操作,事务脚本是更好的选择。
0 请登录后投票
   发表时间:2005-10-31  
关于怎样给马丁的充血域对象注射依赖:
http://doc.iteye.com/confluence/display/ajoo/Dependency+Injection+For+Rich+Domain+Model

看看怎样不用aop也可以不用关心依赖管理。
0 请登录后投票
   发表时间:2005-11-01  
月经性话题,逢初一十五,月食日食讨论各一遍:)
0 请登录后投票
   发表时间:2005-11-01  
ajoo 写道
关于怎样给马丁的充血域对象注射依赖:
http://doc.iteye.com/confluence/display/ajoo/Dependency+Injection+For+Rich+Domain+Model

看看怎样不用aop也可以不用关心依赖管理。

“充血/贫血的领域模型”同“依赖注入”是两个正交的话题,有必要扯在一起吗?
0 请登录后投票
   发表时间:2005-11-01  
江南白衣 写道
月经性话题,逢初一十五,月食日食讨论各一遍:)


lihailihai
0 请登录后投票
   发表时间:2005-11-02  
partech 写道
ajoo 写道
关于怎样给马丁的充血域对象注射依赖:
http://doc.iteye.com/confluence/display/ajoo/Dependency+Injection+For+Rich+Domain+Model

看看怎样不用aop也可以不用关心依赖管理。

“充血/贫血的领域模型”同“依赖注入”是两个正交的话题,有必要扯在一起吗?

充血对象的依赖注入是一个值得关心的问题。因为它的实例化本身不是由容器负责,而它的一些依赖则最好能由容器注射。
spring和pico对此都没有好的解决办法。
所有现行的方案,无一例外都被迫采用了service locator这种不利于单元测试的主动请求组件的方式,同时还增加了对某个具体容器api的绑定。请看:
http://forum.iteye.com/viewtopic.php?t=15665&highlight=injection+AOP
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics