论坛首页 Java企业应用论坛

“过度设计”之真实例子

浏览 85187 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-09-29  
别争了,都来用grails吧,正常人用过grails后,都不会再想用java开发所谓的企业级应用了。
0 请登录后投票
   发表时间:2010-09-29  
不算过度设计啊,普通的
0 请登录后投票
   发表时间:2010-09-29  
skycray 写道
IcedCoffee 写道
lpn520 写道
wangking717 写道
真想看看那个HELLOWORD分8个的代码,让我见识一下。

让你见识一下传说中的8个文件:

前端
helloWord.jsp                //页面文件,不用说了
helloWord.js                 //javascript文件

Struts的Action,就叫动作层吧
HelloWordAction.java         //Action类文件,客户端请求到这个类上

业务层
HelloWordService.java        //业务接口, 还用了一套传说中的“面向接口编程”
HelloWordServiceImp.java     //业务实现类,实现上面定义的接口

DAO层
HelloWordDao.java            //数据操作类,关于HelloWord业务的数据操作都在这里
HelloWord.java               //HelloWord表的ORM的对象
HelloWord.xml                //HelloWord表操作的SQL语句,ibatis的sqlmap




这个真的很正常...


+1.

再+1
0 请登录后投票
   发表时间:2010-09-29   最后修改:2010-09-29
2022228 写道
2022228 写道
js单独放在一个文件中的好处:
客户端第一次请求后就会缓存,不会找服务器要了

如果你放在jsp文件中:
js的代码每次都要由服务器发给客户端,增加网络传输量

service层是用于事务处理拦截处理的,一般的系统需要。你们不需要的话,的确可以省掉这层。
dao层存在也合理啊,每张表一个dao





兄弟,JSP里的静态资源也会缓存下来的

0 请登录后投票
   发表时间:2010-09-29  
看到大家讨论这么多,我这个实习生有自信咯~
0 请登录后投票
   发表时间:2010-09-29  


     给大家看下同样是一个小项目的目录结构,同样也是SSI架构,个人觉得设计的很不错,代码也写的有参考学习的价值.仅供讨论
    
  • 大小: 26.6 KB
0 请登录后投票
   发表时间:2010-09-29   最后修改:2010-09-29
见过差不多十年前的代码,一个几万行的servlet,jsp里面又有好多逻辑,你看的想死。。。
0 请登录后投票
   发表时间:2010-09-29   最后修改:2010-09-29
teclogid 写道
楼主,首先我要说你连最基本的事务边界可能都不清楚。Service层都没有,按你思路做出的系统,绝对存在数据的不一致性。

为什么要用接口?
这方面的好处,我就不说了,自己看书去。

Ext为什么要封装?
这样可以统一界面,如果你每个人都按自己一套创建一个panel,当需要在panel上都加一个按钮什么的,你需要改多少个jsp?人家只要改一个包装的js。任何项目都会用Ext.extend来封装自己的项目组件。

为什么js要提出到单独文件?
1.、编辑器友好,你在jsp里能代码提示吗,能校验吗?
2,方便压缩,js和html合并从来都不是什么问题,弄个ant任务就行了。

分的多不是问题,关键是分割都是必要的,按你的思路,弄一个jsp就写一个系统得了,来回请求这个jsp,用标志位判断执行哪一段,那岂不是超级简单了?这样你就爽了?

 

一看您回的贴,就知道应该跟我们的架构师是同时期的人,首先我想说,struts2里的Action就是业务层,可以理解为Model,并非你们所理解的Controllor,可以参考struts2文档, 所以加Service层没意义,而且我们的一个Action还调用了多个Service里的方法,这个耦合怎么处理呢?  其次, 提到事务处理,你们加service层,不就是为了spring的申明式事务,让事务处理傻瓜化, 但spring的申明式事务只能事务一个方法, 像刚刚提到了,如果一个Action并列调用多个Service的方法,这个事务怎么一致呢? 您担心我存在数据的不一致性,我想问,手动事务处理是干嘛的呢? 不知道您写过类似这样的代码没,不知道您对SQL并发效率有研究过没:

 

sqlMapClient.startTransaction();
sqlMapClient.startBatch();

......

sqlMapClient.executeBatch();
sqlMapClient.endTransaction();
 

 

还有为什么要用接口?

把接口当类型嘛,接口优于抽象嘛,我也不想说为什么。  我一般会在编写上层API与公共类库开发时会用“面向接口编程”, 你写一个业务逻辑实现的类,搞个“面向接口编程”,我怀疑不是吃撑了就是肚子痛。

说到看书,我一直在看,建议您也多看看。

 

 

Ext为什么要封装?

您的想法跟我们架构师一样, 你封装的有问题嘛, 整个系统的界面都有问题, 你改了一个模块嘛, 影响了一大堆模块, 明明会用EXT的人呢,被你这个封装搞得不会用, 当好不容易通过一两周的努力会用你的封装了, 却发现你封装的API改了。

兄弟,我想说,你有能力,你够聪明,可以自己写个UI出来, 封装人家的,有啥意思呢, 没有一个搞封装的人不会被骂, 我建议您省省, 让你底下的人用他们最熟悉的方法编程吧,他们会感谢你的,他们如果发现你的东西好,自然会去学的。

 

 

为什么js要提出到单独文件?

这个其实小问题,只是文件太多了,跳来跳去麻烦而已,在JSP的<script>块里,IDE还是会校验的,不过我一般不用这个检验,可能习惯了写js就当文本写,咱机器不好,一个myeclipse,四五百M的内存,咱吃不销。

 

 

说到分层,本来框架就已经给你分了MVC三层,再加个DAO, 总共四层, 你又何必花费脑筋自己再去分层呢?  套用我提到的话:"多编程,少设计,刚刚好就行"。 要研究架构多去看看大型B/S系统分步式集群解决方案, 而不是在代码里花功夫,来套住你下面可怜的刚刚毕业的被模式框架搞得晕头转向的程序员。

 

 

11 请登录后投票
   发表时间:2010-09-29  
hsbcnet 写道
见过差不多十年前的代码,一个几万行的servlet,jsp里面又有好多逻辑,你看的想死。。。

兄弟,照您说的,那php,ruby,asp.net及早期的asp,不都得回家种菜了
0 请登录后投票
   发表时间:2010-09-29   最后修改:2010-09-29
很多时候,弄出这么多Service、dao层。
都是为了规范代码,为了以后维护。
如果图方便 其实什么 Action Service dao 要它们干吗?
0 请登录后投票
论坛首页 Java企业应用版

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