论坛首页 Java企业应用论坛

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

浏览 48026 次
精华帖 (2) :: 良好帖 (0) :: 新手帖 (17) :: 隐藏帖 (1)
作者 正文
   发表时间:2008-10-03  
godoo 写道
我做了多年的软件开发,从我的经历来讲讲我的意见,首先,看看你所说的采用接口的缺点吧
1. 创建的文件数量太多--你做的项目多大,占用了多少开发工作量?请统计一下自己的工作内容和时间,从我的经验看,这个问题几乎可以忽略
2. 增加了开发人员的工作量--同问题1,如果采用自动生成接口文件,那工作量就更少到忽略了
3. 增加了后期维护的复杂性--本质同1
4. 程序调试不方便--有一定道理,但我的情况来看,也不困难;还有些插件可以帮助找到接口的具体实现

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


1. 如果你自己写测试(特别是如果你是TDD爱好者),你会体验到接口的威力
---------
能具体展开说一下么?
0 请登录后投票
   发表时间:2008-10-04  
适合的就是最好的,如果是大型项目,分层和接口都非常重要。
接口可以更方便的多人合作开发,只要事先吧接口写好,各自就可以写自己的代码,而不用等待别人的代码完成了才可以调试测试。你可以自己写一个简单的接口实现直接返回true,然后来测试自己的代码,不用等待。
对于分成的多少完全要看应用,我们公司的应用还把service层拆开来做两层。因为根据我们的业务需求把所有的业务逻辑都放在一层里面,会导致service层非常庞大,不利于维护,所以我们允许在service层之上再写一层,比如专门控制流程。service层就实现每个节点的功能。
0 请登录后投票
   发表时间:2008-10-05  
概念不清还在这里讨论
0 请登录后投票
   发表时间:2008-10-05  
我认为DAO层大多数情况下都有它存在的必要 除非你的业务真的是写一次就定死了 而且业务太简单。原因是:
1.的确hibernate提供了很方便的接口了,而且spring更是将dao操作封装得淋漓尽致,但是当你突然想加一个业务相关的dao方法给许多service用的时候 你咋办呢?
2.框架只需要提供一个DAO即可,这样基本上就只会多出两个文件:一个是DAO接口 一个是DAO实现类。这个实现类继承第三方的就行,比如hibernate或spring提供的。如果再有其它添加方法可以在这里自定义。毕竟你可以这么认为:hibernate和spring所提供的操作基本都是原子性的,如果需要一点点业务色彩的方法就得自己写了(当然这不是业务类。)
0 请登录后投票
   发表时间:2008-10-08   最后修改:2008-12-08
还是喜欢接口+实现类~
0 请登录后投票
   发表时间:2008-10-10  
mingo 写道
适合的就是最好的。标准做法只能说是参考。

同意!标准就是用来衡量的,不是用来实际操作的。
0 请登录后投票
   发表时间:2008-10-11  
项目不大,功能不复杂的话,感觉像rails一样,设置一个controller放action,一个service放service方法,model放模型类,比较好,如果功能负责,就得按照业务分包了。
0 请登录后投票
   发表时间:2008-10-21  
个人感觉,层的目标主要是降低复杂性和耦合度。
层粉的多了,每个层需要处理的东西就少了。需求因为接口就抽象起来了,
容易变更和维护。
不过,事实上,因为层的增多,需要抽象的组件越多。代码越多。处理的功能过于集中和局部。不很容易明白整体的处理方式,或者说要求的起点太高。如果在大多数时间做的都是不大的项目。那么使用起来纯属找虐。
对Hibernate的部分观点。Hibernate处理的是数据库解耦。如果不引入DAO接口
要Hibernate干吗?
0 请登录后投票
   发表时间:2009-07-28  
downpour 写道
在任何时候,请使用面向接口的编程方式,尤其在项目不断膨胀的过程中,针对接口的编程会为你带来无穷的好处。


什么好处??请说出来
0 请登录后投票
   发表时间:2009-07-28  
liuqiang 写道
据我的理解,分层的好处在于:

1 团队协作,一个组负责一个层,一个人负责该层的若干个点

2 可扩展性,一个接口可以有多个实现,在大点的项目里这个是很常见的,对于中小型的web来说,还是php rails来的爽

3 可维护性,哪个层出了问题就去哪个层解决



“一个接口可以有多个实现,在大点的项目里这个是很常见的”,举例说明下
0 请登录后投票
论坛首页 Java企业应用版

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