论坛首页 Java企业应用论坛

大家对martinfowler's AnemicDomainModel有何看法

浏览 5975 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2005-03-17  
详细请阅读AnemicDomainModel
从他的描述来看,我们好多都犯了"贫血"domain model.
可是在我的实践中,感觉在POJO里边如果加入大量的domain logic感觉又有点怪.而且martinfowler老人家,好像也没有详细说,怎样用POJO来处理.
   发表时间:2005-03-18  
agile_boy 写道
详细请阅读AnemicDomainModel
从他的描述来看,我们好多都犯了"贫血"domain model.
可是在我的实践中,感觉在POJO里边如果加入大量的domain logic感觉又有点怪.而且martinfowler老人家,好像也没有详细说,怎样用POJO来处理.

应该说你可能对Domain Logic的理解和Martin的有些不同。Martin强调的是Domain Object所包含的数据和在这些数据上的操作。这些操作就是所谓的Domain Logic。比如说,银行的转账,Account对象必须确保减去的和增加的相等,这就是企业逻辑,这些逻辑就是对自己所拥有的数据的操作,这就是面向对象,很怪吗?。至于怎样加和减并持久化状态,会Delegate到infrastructure去做。

而在非面向对象的设计中,总会有一个类似于AccountManager之类的对象代替Account做这些转账的操作(即所谓的Fat Service层),Account只是一个表示数据的对象而已,这就是所谓的AnemicDomainModel。
你可以找找JavaEye上的示例程序或分层结构,很多都是这种模型。呵呵,扯远了。
0 请登录后投票
   发表时间:2005-03-18  
kewan 写道

应该说你可能对Domain Logic的理解和Martin的有些不同。

谢谢有见地的解说.但自我认为Domain logic和Martin的没有太多不同,也许你是以为我把CRUD也当作Domain Logic了.其实不是的.
也许我对POJO的理解有问题,在我原来的理解中,POJO只是一个简单的get/set的Bean,在我新的理解来看,不是那么简单的,它应该有属于自己的domain logic操作的.
理解不当之处请多指教.
0 请登录后投票
   发表时间:2005-03-18  
个人看法,POJO类+DAO构成的是数据源层,而Domain Model层里面的Domain Object并不一定是POJO,当然,在逻辑简单的时候可以充当,在逻辑复杂的时候则需要一个BO
0 请登录后投票
   发表时间:2005-03-18  
agile_boy 写道
kewan 写道

应该说你可能对Domain Logic的理解和Martin的有些不同。

谢谢有见地的解说.但自我认为Domain logic和Martin的没有太多不同,也许你是以为我把CRUD也当作Domain Logic了.其实不是的.
也许我对POJO的理解有问题,在我原来的理解中,POJO只是一个简单的get/set的Bean,在我新的理解来看,不是那么简单的,它应该有属于自己的domain logic操作的.
理解不当之处请多指教.

那看样子要澄清一下POJO的定义了。
很多人认为POJO是只有get个set方法的JavaBean,我的理解不是的。Pure Old Java Object指的是不含任何其他技术(如EJB)的只是用Java来表示的Java Object,和只有get个set方法的JavaBean是不同的。POJO只关注企业逻辑,和其他的技术无关。
0 请登录后投票
   发表时间:2005-03-18  
BlueDavy 写道
个人看法,POJO类+DAO构成的是数据源层,而Domain Model层里面的Domain Object并不一定是POJO,当然,在逻辑简单的时候可以充当,在逻辑复杂的时候则需要一个BO

这点我不能苟同,我认为BO就是一个POJO.你能给我一个BO不是POJO的理由吗?
至于逻辑简单与否,和是否为POJO没有关系。
0 请登录后投票
   发表时间:2005-03-19  
kewan 写道

很多人认为POJO是只有get个set方法的JavaBean,我的理解不是的。Pure Old Java Object指的是不含任何其他技术(如EJB)的只是用Java来表示的Java Object,和只有get个set方法的JavaBean是不同的。POJO只关注企业逻辑,和其他的技术无关。

跟我现在理解的一致。而且也带出一个关于POJO穿透层的问题,在此理解上,我认为应该是可以穿透到表现层的。
0 请登录后投票
   发表时间:2005-04-06  
[quote="kewan]很多人认为POJO是只有get个set方法的JavaBean,我的理解不是的。Pure Old Java Object指的是不含任何其他技术(如EJB)的只是用Java来表示的Java Object,和只有get个set方法的JavaBean是不同的。POJO只关注企业逻辑,和其他的技术无关。

赞一个,觉得这个解释是我目前看到的最好的。
0 请登录后投票
论坛首页 Java企业应用版

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