论坛首页 Java企业应用论坛

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

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

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

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

用接口最不方便的地方不是要多些这些接口文件,是本来如Eclipse这种IDE可以用Ctrl+点源码,从Service中写的DAO类名直接找到DAO类,用了接口,就必须得自己手工打开这些实现类。
要有修改,也必须得两个文件一起改,真是不胜其烦,感觉这种直接提取所有方法组成Interface的做法,是对Interface功用的扭曲。

Eclipse中早就有插件,可以直接跳转到接口的实现类。

接口定义好后需要不停地修改吗?如果需要,那是设计有问题,没有谁隔三叉五地去修改接口的参数。

另外,个人觉得还是没有必要一个service一个dao,dao是为service服务的,一个service可以调用多个dao,一个dao也可以为多个service服务,到底一个service要多少dao,这要看dao设计的粒度。

只有实现类跳到接口,哪有接口跳到实现类?古板的web项目和很多产品类项目又不同,模块无数多,互相关系却不大,谁有空靠YY就能把需要的接口给写全了,都是按需增加的。
说就事论事嘛,总是要牵扯到设计上去,CRUD项目需要这么多设计么?

不必要一个service一个dao倒没错,哪有人规定过一个service要对应一个dao的.dao是以一个数据库操作为基本单位,service是以完成一个业务逻辑为一个基本单位,这两者完全不该有什么数量上的对应关系。


用implementors试一试,我用的还是0.0.16版本,不知道新版本出来没有。

service与dao的关系是针对楼上的观点提出的,没有谁规定一个service一个dao,但是在楼上出现了很多这样的观点:一个service,一个dao。
  • 描述: 从接口跳转到实现类
  • 大小: 23.6 KB
  • 描述: 从实现类跳转到接口
  • 大小: 23.5 KB
0 请登录后投票
   发表时间:2008-09-27  
接口是针对扩展而言的
如果确定不要扩展
可以采用xp的做法
class == interface
抛弃接口
但是,如果这样,你的软件就不回遵循open-close原则
这表示你要扩展,就要付出昂贵的代价
0 请登录后投票
   发表时间:2008-09-27  
downpour 写道
在任何时候,请使用面向接口的编程方式,尤其在项目不断膨胀的过程中,针对接口的编程会为你带来无穷的好处。

 

同意downpour。你做的项目可能很小,在我做的项目中,基本上都是面向接口编程。感觉真的很好,而且项目多了,用同一个模式开发起来也快,维护起来更加方便,因为是同一个模式。

0 请登录后投票
   发表时间:2008-09-27  
aidiyuxin 写道
接口是针对扩展而言的
如果确定不要扩展
可以采用xp的做法
class == interface
抛弃接口
但是,如果这样,你的软件就不回遵循open-close原则
这表示你要扩展,就要付出昂贵的代价

同意。
因为我觉得很少有要彻底更改DAO这个级别上的实现这种情况。
更改的原因都是出自客户的需求,而客户要的只是一个最终效果。
哪天遇到说周一三五用hibernate,二四六又要你换成JDBC的客户,也是你的运气太好了。
0 请登录后投票
   发表时间:2008-09-27  
具体情况具体分析,对于小项目,我觉得lz说的很对。
0 请登录后投票
   发表时间:2008-09-27  
ltian 写道
要是框架做的好,绝大多数情况下,Dao层只需要接口,不需要写实现类。做到不到这点,说明公司里面的构架师还需进一步努力。

举个例子说明一下
0 请登录后投票
   发表时间:2008-09-27  
分层我的理解就是:

1。事务隔离级别
2。业务层的扩展
3。对外围系统的接口形式和内容的扩展
0 请登录后投票
   发表时间:2008-09-27  
我觉得分层的粒度是和系统业务的负责度和不确定行相关的。
如果一个简单的系统业务也不会有太多变化,那别分那么多层简直是受罪。
对于比如说超过100个人月的系统来说,分层不清,职责不明,对外围系统支持多变的情况是非常恐怖的。
0 请登录后投票
   发表时间:2008-09-27  
“在Service层和Dao层中,一个接口文件对应一个实现类”完全没有必要!

这个是架构没做好,和用不用接口无关。
0 请登录后投票
论坛首页 Java企业应用版

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