frank oo java

我爱oo,我爱java。http://oofrank.blogchina.com

My Links

Blog统计

公告

欢迎到 oofrank@blogchina 来 QQ:421057986 email:oofrank@163.com
www.flickr.com
oofrank@flickr with my S9500

Free Download Manager
Free Download Manager

文章

收藏

相册

IT

other

存档


正在读取评论……
   贫血对象:一个不包含Save方法的对象  http://jroller.com/page/habuma?entry=spring_2_0_vs_the
   
   // business functions
  public void save() {
      dao.save(this);
  }

  // injected DAO
  private CustomerDao dao;
  public void setDao(CustomerDao dao) {
      this.dao = dao;
  }
   
   偶然听到有人讨论OO设计中,领域对象的贫血模型和非贫血模型的讨论.
   有人支持贫血模型,有人支持非贫血模型.
   我认为这不是一个值得上升到系统模型设计的问题,理由如下
   1.OOA,OOD关心的主要是领域建模,是否包含Save只是对领域的理解范围不同.
   2.实际"贫血"的说法很不确切:除了Save,领域对象还有很多其他的丰富多彩的功能,这时对象并不贫血
   3.如果领域对象只是值对象,根本没有必要过多的分析,即只有DTO职责的ValueObject才是领域中值得存在的,但不用过度分析
   4.Save仅仅是一个方面,将来AOP的实现可以到达这个层次,即将来可以通过AOP来实现Save,那时就不存在贫血不贫血的问题
   
   另外:
   A:持久层不是DAO层,持久层的职责是对领域对象的持久化,所以持久层包含DAO,职责却远大于DAO.
   B:当我们考虑的仅仅是通过数据库存储业务影响时,即理解持久层是数据存储层时,DAO的实现则完全由数据存储层完成了.
     我认为数据存储层不是完整的持久层.
     
   结论:当我们将DAO作为领域内问题是,显然非贫血模型很合理:90%的以上企业应用还行典型的数据库应用.
        当我们将持久化剔除出领域时(使用一些持久层框架:比如hibernate)我们就可以使用贫血模型咯.

Trackback: http://tb.donews.net/TrackBack.aspx?PostId=687377


[点击此处收藏本文]  发表于2006年01月08日 7:00 PM




正在读取评论……
大名
网址
验证码
评论