论坛首页 Java企业应用论坛

关于领域建模的一些设想

浏览 2346 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (12)
作者 正文
   发表时间:2008-07-18  
我看javaeye论坛里面讨论了这么多的domainObject,无非都在讨论dao是不是应该注入到model里面去,让model有更强大的功能,而且往面向对象设计靠的更近,很多人拿出ROR来进行比较,我觉得没有多大意义,因为两种不同的语言有它的不同性,你不能要求java做ror能做的。我认为还是讨论一下如何在java里面更好的设计domainObject比较现实。

我们现在项目就是所谓的贫血model,都是由get set 方法组成,外层有service来对model进行操作,每个service注入了好多dao,dao是按照业务模块划分的,这样就导致service太过庞大了,而且没有什么dao接口隔离概念。这样看来虽然系统的层次少了,但是导致系统每个模块负责的东西就多了。尤其是dao这东西,其实都是基于basedao的,非得按照业务区分很多***Dao,不是说这个有问题,而是感觉没有多大必要,这一点我比较同意robbin所提出的service就共用一个baseDao,具体业务就在service里面扩展。关于domain的设计 我认为还是保持它的纯洁性比较好,不要给它赋予太多的责任,我们可以建一个类关联那个Model,从而来增强它。
//model
Class User implement IModel{
  private String name
 
  private int age
 
  //todo  get set implement
}

//代理model

Class UserAdapter  implement IModelAdapter{
   private IBaseDao baseDao;

   private User user;

  public UserDecorater(User user){
    this.user = user;
 }
  public void save(){
   //baseDao operation
  // todo
}


Interface IModelAdapter implement ,IBaseDao{
    public Object getInstance();  //获取原始纯洁的model
  //todo 获取其它的接口方法
}

这样的话我操作的model其实是原始model的增强,这样这个增强model就有很多功能了,当然这样做得话会导致产生很多model增强类。
有什么问题各位发表一下意见。
   发表时间:2008-07-18  
增强的model由谁来构造?
0 请登录后投票
   发表时间:2008-08-08  
看楼主的意思可能UserAdapter就是User的增强代理类了,用来代理User增强IBaseDAO中的基础动作,不过可惜这个装饰模式没有写正确阿.而且这样仍然还是一个贫血的领域模型,没有看到有什么改善
0 请登录后投票
论坛首页 Java企业应用版

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