论坛首页 Java企业应用论坛

Domain Object贫血vs富血(DDD)和spring roo到ruby的扯淡

浏览 42320 次
该帖已经被评为良好帖
作者 正文
   发表时间:2011-04-19  
peterwei 写道
sulong 写道
各位,不如把《领域驱动设计》那本书看一看,如果连这一方法学的经典书藉都没有看过,这样讨论没有多大意义。

DDD的好处不仅仅体现在代码上。它要解决的领域与实现的矛盾,不是具体的技术手段。具体的技术手段,就只强调独立的领域层代码,及模型绑定代码。其它的都是一些具体的技巧了。

书是好书,看过也不能代表什么。如果DDD,真的是银弹,我相信肯定早就流行了。它不流行,必要有它的缺点和局限性。


是因为现实的功利性。
0 请登录后投票
   发表时间:2011-04-19  

 

引用楼主
说一下另一个框架Seam对于富血也做得不错了,但还不是完全富血,同样也绑带了JSF。



楼主,关于JSF的评论我不太同意,JSF封装了很多功能,很多组件,减轻了程序员很多工作。
空说无凭,给大家看些例子吧

这个是pickList http://livedemo.exadel.com/richfaces-demo/richfaces/pickList.jsf?c=pickList
这个是tree http://livedemo.exadel.com/richfaces-demo/richfaces/tree.jsf?c=tree&tab=usage

个人觉得,学了JSF,页面上的压力大大减少了

 

0 请登录后投票
   发表时间:2011-04-19  
hatedance 写道
看不下去了,我来简单地告诉你们什么是ddd。具体的去jdon看看。
ddd就是利用ORM和AOP屏蔽数据库的sql和事务。比如
bool login(userid,password);
{
User user = repository.get(User.class,userid);
return user.checkpassword(password);
}
而不是select * from users where userid=? and password=?
比如学生选课
student.addClass(class){this.classes.put(class);}
repository.update(student);//此处级联更新新增的class
而不是insert into classes values(....)

总之,这种代码几乎看不到sql,看不到commit,仿佛一切都在内存的集合里。hibernate的session基本上直接拿来当repository用就好了。

但显然DDD有其适合场景,有些时候性能成为大问题,必须用hql,甚至sql等办法来解决。

不管怎么样,select是必然要的。你说的这些根本代表不了DDD.很多贫血模式都是这么应用的。
0 请登录后投票
   发表时间:2011-04-21  
领域模型只是一种思路,为什么没有流行起来是因为没有真正能够支持领域模型的充血Domain Object框架存在,Rails靠近了这个思路。由于java死板的语法的原因,在java中实现Domain Object,现在来说还不现实。除非再出现一个类似Hibernate那样划时代的Domain Object ORM框架出来。

另外:
Spring Roo只适合做DEMO,或者说是一种前进道路上的不成功的尝试,真实的业务问题使用Spring Roo是不行的。

又另外:
我们自己也做了一个java充血模型框架,可以说的是比Spring Roo要好一些。但是依然解决不了领域模型框架的问题,可以说纯领域模型框架在现阶段是不存在的。
0 请登录后投票
   发表时间:2011-04-21  
icewind_yx 写道
领域模型只是一种思路,为什么没有流行起来是因为没有真正能够支持领域模型的充血Domain Object框架存在,Rails靠近了这个思路。由于java死板的语法的原因,在java中实现Domain Object,现在来说还不现实。除非再出现一个类似Hibernate那样划时代的Domain Object ORM框架出来。

另外:
Spring Roo只适合做DEMO,或者说是一种前进道路上的不成功的尝试,真实的业务问题使用Spring Roo是不行的。

又另外:
我们自己也做了一个java充血模型框架,可以说的是比Spring Roo要好一些。但是依然解决不了领域模型框架的问题,可以说纯领域模型框架在现阶段是不存在的。

好像这个思路已经有很多年了。你说Spring roo只适合做demo,但真的有些人开始在真的项目中使用了,如引子所说的CTO.我想应该有一定的成熟度和可行性了,要不然别人不会冒然行事。
哈哈,居然比Spring Roo还好些,口气不小嘛。你们参考了Spring roo了吗?万一能解决你们的问题呢?隐约能猜到你所在的公司,好像是我以前接触过的一家公司。
0 请登录后投票
   发表时间:2011-04-21  
我又上来骂一句,呵呵。

当年整出什么Core J2EE设计模式,VO,DAO,Service,Facade出现了,当时人们眼前一亮,我靠,原来世界上面可以把层次分析得怎么清晰。后来,随着项目的扩大,又不行了。又跳出来骂,妈的,搞这么多测试,DAO都搞个接口,一大堆Service,Manager在里面。老子还不如搞一个Util类去处理。这个时候,又反思为什么太多的DO或者VO作为贫血对象,我习惯成为Thin Object,而相反为Rich Object。

我记得一次和某CTO分析系统时,我提出JSF和EJB的方案,被他批评了,他认为层次华清晰地MVC是一个银弹,我对他说确实很“淫——荡”。

很多系统架构师很容易被洗脑,很少去看非主流技术。

说到整体,有状态的EJB不正是干Rich Object的吗,有人说性能不好怎么低,复杂,都是瞎扯。首先,看看业务和开发效率,难道Rich就不能OOP吗?只要是Java对象都能OOP,只代码风格和关注点不同。

对不起,我又冲动了!
0 请登录后投票
   发表时间:2011-04-21   最后修改:2011-04-21
mercyblitz 写道
我又上来骂一句,呵呵。

当年整出什么Core J2EE设计模式,VO,DAO,Service,Facade出现了,当时人们眼前一亮,我靠,原来世界上面可以把层次分析得怎么清晰。后来,随着项目的扩大,又不行了。又跳出来骂,妈的,搞这么多测试,DAO都搞个接口,一大堆Service,Manager在里面。老子还不如搞一个Util类去处理。这个时候,又反思为什么太多的DO或者VO作为贫血对象,我习惯成为Thin Object,而相反为Rich Object。

我记得一次和某CTO分析系统时,我提出JSF和EJB的方案,被他批评了,他认为层次华清晰地MVC是一个银弹,我对他说确实很“淫——荡”。

很多系统架构师很容易被洗脑,很少去看非主流技术。

说到整体,有状态的EJB不正是干Rich Object的吗,有人说性能不好怎么低,复杂,都是瞎扯。首先,看看业务和开发效率,难道Rich就不能OOP吗?只要是Java对象都能OOP,只代码风格和关注点不同。

对不起,我又冲动了!

那你Rich了吗?你们的团队Rich了吗?说实话,我们现在的团队,还是老一套,走主流的一套。是Web应用.
web层-vo(将来可能rmi or hessian)-spring-po-dao-hibernate.今天讨论还有个小弟提出0配置和无vo、无接口方式,他说我们是为了接口而接口。哈哈。结果当然是部门经理主流派战胜,有权嘛。我做为夹心层,只能分析各自的优缺点,然后稍偏向小弟。但是说了一句:各有优缺点,这个由老大拍板。但其实thin的也挺好的。
0 请登录后投票
   发表时间:2011-04-21  
peterwei 写道
mercyblitz 写道
我又上来骂一句,呵呵。

当年整出什么Core J2EE设计模式,VO,DAO,Service,Facade出现了,当时人们眼前一亮,我靠,原来世界上面可以把层次分析得怎么清晰。后来,随着项目的扩大,又不行了。又跳出来骂,妈的,搞这么多测试,DAO都搞个接口,一大堆Service,Manager在里面。老子还不如搞一个Util类去处理。这个时候,又反思为什么太多的DO或者VO作为贫血对象,我习惯成为Thin Object,而相反为Rich Object。

我记得一次和某CTO分析系统时,我提出JSF和EJB的方案,被他批评了,他认为层次华清晰地MVC是一个银弹,我对他说确实很“淫——荡”。

很多系统架构师很容易被洗脑,很少去看非主流技术。

说到整体,有状态的EJB不正是干Rich Object的吗,有人说性能不好怎么低,复杂,都是瞎扯。首先,看看业务和开发效率,难道Rich就不能OOP吗?只要是Java对象都能OOP,只代码风格和关注点不同。

对不起,我又冲动了!

那你Rich了吗?你们的团队Rich了吗?说实话,我们现在的团队,还是老一套,走主流的一套。是Web应用.
web层-vo(将来可能rmi or hessian)-spring-po-dao-hibernate.今天讨论还有个小弟提出0配置和无vo、无接口方式,他说我们是为了接口而接口。哈哈。结果当然是部门经理主流派战胜,有权嘛。我做为夹心层,只能分析各自的优缺点,然后稍偏向小弟。但是说了一句:各有优缺点,这个由老大拍板。但其实thin的也挺好的。


官大一级压人呀!多元化的思想,很难形成规模!
0 请登录后投票
   发表时间:2011-04-21  
引用
说到整体,有状态的EJB不正是干Rich Object的吗,有人说性能不好怎么低,复杂,都是瞎扯。首先,看看业务和开发效率,难道Rich就不能OOP吗?只要是Java对象都能OOP,只代码风格和关注点不同。

banq那帮人应该就是搞这个Rich的。好吧,07年的时候我也搞过半年ejb,但是当时两个架构师否决了ejb,从此一直走在spring道路上。实际上Rich在开发速度上确实很快,我有过小段时间的实践。但是很多人担心业务越来越复杂后,可维护性的问题。我其实也有这个担心,所以不敢说特别坚定,只能说拭目以待。
0 请登录后投票
   发表时间:2011-04-22  
mercyblitz 写道
peterwei 写道
mercyblitz 写道
我又上来骂一句,呵呵。

当年整出什么Core J2EE设计模式,VO,DAO,Service,Facade出现了,当时人们眼前一亮,我靠,原来世界上面可以把层次分析得怎么清晰。后来,随着项目的扩大,又不行了。又跳出来骂,妈的,搞这么多测试,DAO都搞个接口,一大堆Service,Manager在里面。老子还不如搞一个Util类去处理。这个时候,又反思为什么太多的DO或者VO作为贫血对象,我习惯成为Thin Object,而相反为Rich Object。

我记得一次和某CTO分析系统时,我提出JSF和EJB的方案,被他批评了,他认为层次华清晰地MVC是一个银弹,我对他说确实很“淫——荡”。

很多系统架构师很容易被洗脑,很少去看非主流技术。

说到整体,有状态的EJB不正是干Rich Object的吗,有人说性能不好怎么低,复杂,都是瞎扯。首先,看看业务和开发效率,难道Rich就不能OOP吗?只要是Java对象都能OOP,只代码风格和关注点不同。

对不起,我又冲动了!

那你Rich了吗?你们的团队Rich了吗?说实话,我们现在的团队,还是老一套,走主流的一套。是Web应用.
web层-vo(将来可能rmi or hessian)-spring-po-dao-hibernate.今天讨论还有个小弟提出0配置和无vo、无接口方式,他说我们是为了接口而接口。哈哈。结果当然是部门经理主流派战胜,有权嘛。我做为夹心层,只能分析各自的优缺点,然后稍偏向小弟。但是说了一句:各有优缺点,这个由老大拍板。但其实thin的也挺好的。


官大一级压人呀!多元化的思想,很难形成规模!

哈哈,你就敢保证你们团队里是统一思想的?你们只是每个人憋在心里而已。大家都隐而不发,心里很多小九九谁也不知道谁罢了。我们是比较open.不过比较open也挺头疼的,小弟们总会提出各种各样的idea。还要说服他们。
0 请登录后投票
论坛首页 Java企业应用版

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