锁定老帖子 主题:在项目架构中如何进行分层才是最合理的?
精华帖 (2) :: 良好帖 (0) :: 新手帖 (17) :: 隐藏帖 (1)
|
|
---|---|
作者 | 正文 |
发表时间:2008-10-03
godoo 写道 我做了多年的软件开发,从我的经历来讲讲我的意见,首先,看看你所说的采用接口的缺点吧
1. 创建的文件数量太多--你做的项目多大,占用了多少开发工作量?请统计一下自己的工作内容和时间,从我的经验看,这个问题几乎可以忽略 2. 增加了开发人员的工作量--同问题1,如果采用自动生成接口文件,那工作量就更少到忽略了 3. 增加了后期维护的复杂性--本质同1 4. 程序调试不方便--有一定道理,但我的情况来看,也不困难;还有些插件可以帮助找到接口的具体实现 优点说个体会最深的 1. 如果你自己写测试(特别是如果你是TDD爱好者),你会体验到接口的威力 2. 接口的确会使你的应用灵活很多;DAO改变实现很少,不管是换DB,还是换框架或实现,业务层换具体实现也不太多,但你测试时会方便很多(这个所有都适用); 其他优点还有不少,可以参考如敏捷软件开发之类的书籍 1. 如果你自己写测试(特别是如果你是TDD爱好者),你会体验到接口的威力 --------- 能具体展开说一下么? |
|
返回顶楼 | |
发表时间:2008-10-04
适合的就是最好的,如果是大型项目,分层和接口都非常重要。
接口可以更方便的多人合作开发,只要事先吧接口写好,各自就可以写自己的代码,而不用等待别人的代码完成了才可以调试测试。你可以自己写一个简单的接口实现直接返回true,然后来测试自己的代码,不用等待。 对于分成的多少完全要看应用,我们公司的应用还把service层拆开来做两层。因为根据我们的业务需求把所有的业务逻辑都放在一层里面,会导致service层非常庞大,不利于维护,所以我们允许在service层之上再写一层,比如专门控制流程。service层就实现每个节点的功能。 |
|
返回顶楼 | |
发表时间:2008-10-05
概念不清还在这里讨论
|
|
返回顶楼 | |
发表时间:2008-10-05
我认为DAO层大多数情况下都有它存在的必要 除非你的业务真的是写一次就定死了 而且业务太简单。原因是:
1.的确hibernate提供了很方便的接口了,而且spring更是将dao操作封装得淋漓尽致,但是当你突然想加一个业务相关的dao方法给许多service用的时候 你咋办呢? 2.框架只需要提供一个DAO即可,这样基本上就只会多出两个文件:一个是DAO接口 一个是DAO实现类。这个实现类继承第三方的就行,比如hibernate或spring提供的。如果再有其它添加方法可以在这里自定义。毕竟你可以这么认为:hibernate和spring所提供的操作基本都是原子性的,如果需要一点点业务色彩的方法就得自己写了(当然这不是业务类。) |
|
返回顶楼 | |
发表时间:2008-10-08
最后修改:2008-12-08
还是喜欢接口+实现类~
|
|
返回顶楼 | |
发表时间:2008-10-10
mingo 写道 适合的就是最好的。标准做法只能说是参考。
同意!标准就是用来衡量的,不是用来实际操作的。 |
|
返回顶楼 | |
发表时间:2008-10-11
项目不大,功能不复杂的话,感觉像rails一样,设置一个controller放action,一个service放service方法,model放模型类,比较好,如果功能负责,就得按照业务分包了。
|
|
返回顶楼 | |
发表时间:2008-10-21
个人感觉,层的目标主要是降低复杂性和耦合度。
层粉的多了,每个层需要处理的东西就少了。需求因为接口就抽象起来了, 容易变更和维护。 不过,事实上,因为层的增多,需要抽象的组件越多。代码越多。处理的功能过于集中和局部。不很容易明白整体的处理方式,或者说要求的起点太高。如果在大多数时间做的都是不大的项目。那么使用起来纯属找虐。 对Hibernate的部分观点。Hibernate处理的是数据库解耦。如果不引入DAO接口 要Hibernate干吗? |
|
返回顶楼 | |
发表时间:2009-07-28
downpour 写道 在任何时候,请使用面向接口的编程方式,尤其在项目不断膨胀的过程中,针对接口的编程会为你带来无穷的好处。
什么好处??请说出来 |
|
返回顶楼 | |
发表时间:2009-07-28
liuqiang 写道 据我的理解,分层的好处在于:
1 团队协作,一个组负责一个层,一个人负责该层的若干个点 2 可扩展性,一个接口可以有多个实现,在大点的项目里这个是很常见的,对于中小型的web来说,还是php rails来的爽 3 可维护性,哪个层出了问题就去哪个层解决 “一个接口可以有多个实现,在大点的项目里这个是很常见的”,举例说明下 |
|
返回顶楼 | |