锁定老帖子 主题:“过度设计”之真实例子
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2010-09-29
别争了,都来用grails吧,正常人用过grails后,都不会再想用java开发所谓的企业级应用了。
|
|
返回顶楼 | |
发表时间:2010-09-29
不算过度设计啊,普通的
|
|
返回顶楼 | |
发表时间: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 |
|
返回顶楼 | |
发表时间:2010-09-29
最后修改:2010-09-29
2022228 写道 2022228 写道 js单独放在一个文件中的好处:
客户端第一次请求后就会缓存,不会找服务器要了 如果你放在jsp文件中: js的代码每次都要由服务器发给客户端,增加网络传输量 service层是用于事务处理拦截处理的,一般的系统需要。你们不需要的话,的确可以省掉这层。 dao层存在也合理啊,每张表一个dao 兄弟,JSP里的静态资源也会缓存下来的 |
|
返回顶楼 | |
发表时间:2010-09-29
看到大家讨论这么多,我这个实习生有自信咯~
|
|
返回顶楼 | |
发表时间:2010-09-29
给大家看下同样是一个小项目的目录结构,同样也是SSI架构,个人觉得设计的很不错,代码也写的有参考学习的价值.仅供讨论 |
|
返回顶楼 | |
发表时间:2010-09-29
最后修改:2010-09-29
见过差不多十年前的代码,一个几万行的servlet,jsp里面又有好多逻辑,你看的想死。。。
|
|
返回顶楼 | |
发表时间: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系统分步式集群解决方案, 而不是在代码里花功夫,来套住你下面可怜的刚刚毕业的被模式框架搞得晕头转向的程序员。
|
|
返回顶楼 | |
发表时间:2010-09-29
hsbcnet 写道 见过差不多十年前的代码,一个几万行的servlet,jsp里面又有好多逻辑,你看的想死。。。
兄弟,照您说的,那php,ruby,asp.net及早期的asp,不都得回家种菜了 |
|
返回顶楼 | |
发表时间:2010-09-29
最后修改:2010-09-29
很多时候,弄出这么多Service、dao层。
都是为了规范代码,为了以后维护。 如果图方便 其实什么 Action Service dao 要它们干吗? |
|
返回顶楼 | |