论坛首页 Java企业应用论坛

在项目架构中如何进行分层才是最合理的?

浏览 48525 次
精华帖 (2) :: 良好帖 (0) :: 新手帖 (17) :: 隐藏帖 (1)
作者 正文
   发表时间:2008-09-23  
这个是根据项目的不同而不同的
0 请登录后投票
   发表时间:2008-09-23  
mycybyb 写道
个人觉得DAO完全没有存在的必要

 
0 请登录后投票
   发表时间:2008-09-23  
我们目前项目结构:

view:没啥好说,有好的美工你想啥都行。
controller:数据验证,跳转逻辑,赋值/取值,等等
service:重点,包含各种各样的业务逻辑。
dao:纯粹做与存取数据有关的。

适当分层是需要的,还需要适当分模块,以便于把压力分发到其他服务器。

可是一对一的接口+实现,有点抗拒。
应该按业务来定义接口吧,而不是麻木地乱套。
0 请登录后投票
   发表时间:2008-09-23  
godoo 写道
我做了多年的软件开发,从我的经历来讲讲我的意见,首先,看看你所说的采用接口的缺点吧
1. 创建的文件数量太多--你做的项目多大,占用了多少开发工作量?请统计一下自己的工作内容和时间,从我的经验看,这个问题几乎可以忽略
2. 增加了开发人员的工作量--同问题1,如果采用自动生成接口文件,那工作量就更少到忽略了
3. 增加了后期维护的复杂性--本质同1
4. 程序调试不方便--有一定道理,但我的情况来看,也不困难;还有些插件可以帮助找到接口的具体实现

优点说个体会最深的
1. 如果你自己写测试(特别是如果你是TDD爱好者),你会体验到接口的威力
2. 接口的确会使你的应用灵活很多;DAO改变实现很少,不管是换DB,还是换框架或实现,业务层换具体实现也不太多,但你测试时会方便很多(这个所有都适用);
其他优点还有不少,可以参考如敏捷软件开发之类的书籍

测试我写的不多,不过我想写测试要替换一个伪DAO的话,使用匿名内部类也能实现这个目的。

用接口最不方便的地方不是要多些这些接口文件,是本来如Eclipse这种IDE可以用Ctrl+点源码,从Service中写的DAO类名直接找到DAO类,用了接口,就必须得自己手工打开这些实现类。
要有修改,也必须得两个文件一起改,真是不胜其烦,感觉这种直接提取所有方法组成Interface的做法,是对Interface功用的扭曲。
0 请登录后投票
   发表时间:2008-09-24  
分层无定式。

对于接口,一般还是有的好。接口可以是方法定义更为清晰。而且在一些技术框架中,接口的使用是必须的。比如AOP、Mock,EJB 等等。当然如果这些你都用不到,项目也不大,不用接口没问题。但问题是小项目要用java做?python、php、ruby岂不更快更灵活
0 请登录后投票
   发表时间:2008-09-24  
SSailYang 写道
分层无定式。

对于接口,一般还是有的好。接口可以是方法定义更为清晰。而且在一些技术框架中,接口的使用是必须的。比如AOP、Mock,EJB 等等。当然如果这些你都用不到,项目也不大,不用接口没问题。但问题是小项目要用java做?python、php、ruby岂不更快更灵活

同意楼上的说法
   项目进行时~
0 请登录后投票
   发表时间:2008-09-24  
raymond2006k 写道
   同意楼主。虽然我们项目中用了 “接口+实现” 的模式的Service, 但就轻量级开发,我觉得也没必要存在Service接口;按功能建立的DAO接口更没有必要了。 100个功能,就多了200个Java文件,文件数太多了。




那是你的项目太小了吧!还没有经历真正的项目开发。分层是很有必要的,尤其是业务层和DAO。
0 请登录后投票
   发表时间:2008-09-24  
adolf506 写道
raymond2006k 写道
   同意楼主。虽然我们项目中用了 “接口+实现” 的模式的Service, 但就轻量级开发,我觉得也没必要存在Service接口;按功能建立的DAO接口更没有必要了。 100个功能,就多了200个Java文件,文件数太多了。




那是你的项目太小了吧!还没有经历真正的项目开发。分层是很有必要的,尤其是业务层和DAO。

个人觉得interface没有存在的必要,原因有三:
1:通常情况下,一个实现类一一对应一个接口,反而增加了代码量。
2:查找的时候还要去看是哪个具体实现类实现了该接口。
3:申明式事物,可以用cglib面向类动态代理。
0 请登录后投票
   发表时间:2008-09-24  
有点晕.
此问题最终沦落到讨论interface是否有存在的必要了.
严重怀疑javaeye帖子的水准, 居然成了首页推荐.
OOP思想的重要核心之一就是面向interface编程.
否则, 你直接面向过程写程序得了.
省却java, qbasic更适合.
0 请登录后投票
   发表时间:2008-09-24  
我跟楼主的想法几乎完全一样,而且世界开发的三个项目中就是这样做的
0 请登录后投票
论坛首页 Java企业应用版

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