论坛首页 Java企业应用论坛

“过度设计”之真实例子

浏览 85418 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-09-29   最后修改:2010-09-29
lpn520 写道
wangking717 写道
真想看看那个HELLOWORD分8个的代码,让我见识一下。

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

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

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

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

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




这个是很正常的用SSH或SSI的三层架构啊
action--service--dao

实际的项目毕竟不是玩具都算不上的helloworld

DAO层里面一般只是实现单一行为的sql
而service则可能需要调用多个DAO里面的多个方法才能实现一个业务逻辑
action层负责调用service里面的业务方法,把后台返回的数据包装成前端用的数据,还有一些数据校验

在实际系统里这个是一个很合理的架构模式

0 请登录后投票
   发表时间:2010-09-29   最后修改:2010-09-29
matt.u 写道
xhdwell 写道
SSH、SSI确实老土,但我觉得就现在我们的一些业务系统来说SSH、SSI还是最合理的解决方案。


走出Java的世界,你会发现SSH、SSI并非解决问题的唯一方式。SSH、SSI也并非不好,只是大家更注重性能、扩展、那20%的莫须有的需求,但忽略了开发人员的感受和效率。



呵呵,事实上我开发这么久的 经验就是最初的所谓高扩展性设计最后往往 都没有用 。还非常累赘。


天下武功  无坚不摧 唯快不破。将项目合理的分析(细)、模块和结构清晰;最大限度的提高开发效率,“让大象跳舞”,提高应对变化的速度。才是最接近银弹的解决方案。

而这,是编码以外的事情。
0 请登录后投票
   发表时间:2010-09-29  
matt.u 写道
xhdwell 写道
SSH、SSI确实老土,但我觉得就现在我们的一些业务系统来说SSH、SSI还是最合理的解决方案。


走出Java的世界,你会发现SSH、SSI并非解决问题的唯一方式。SSH、SSI也并非不好,只是大家更注重性能、扩展、那20%的莫须有的需求,但忽略了开发人员的感受和效率。

说的有理,不过国内环境和国外区别还是很大的。国内就喜欢拿来主义。呵呵。顺便说句,你的头像很帅。
0 请登录后投票
   发表时间:2010-09-29  
架构很死的东西,一旦架构好了很难修改,能不用最好了。
0 请登录后投票
   发表时间:2010-09-29  
matt.u 写道
xhdwell 写道
SSH、SSI确实老土,但我觉得就现在我们的一些业务系统来说SSH、SSI还是最合理的解决方案。


走出Java的世界,你会发现SSH、SSI并非解决问题的唯一方式。SSH、SSI也并非不好,只是大家更注重性能、扩展、那20%的莫须有的需求,但忽略了开发人员的感受和效率。


真知灼见!
0 请登录后投票
   发表时间:2010-09-29  
jasph77 写道
lpn520 写道
jasph77 写道
没有最好的架构。
适合自己公司业务需求,适合自己团队的开发习惯的就是好框架。

不要埋怨,学着接受它。
等有一天你坐上架构师 这个位置的时候。。。


哥不埋怨,哥来这个公司就是做架构师 , 而且我可从来没有贬低先人的意思


到处都是架构师。。

IT6年了
还是写程序的

兄弟,杭州哪家公司的啊。6年改转业务或架构了吧。
0 请登录后投票
   发表时间:2010-09-29  
国外的开源团队正准备在传统开发框架做改革,Grails、Spring Roo、Seam、Play、Lift其实都是大家在对提高开发效率上的尝试。甚至在语言上也在做着改革、Scala、Groovy、JRuby、JPython等的出现也是为了弥补以往使用Java进行开发的不足,所以我们也要吸收新的开发观念,破旧立新。这些才能推动技术的发展。
0 请登录后投票
   发表时间:2010-09-29  
xhdwell 写道
matt.u 写道
xhdwell 写道
SSH、SSI确实老土,但我觉得就现在我们的一些业务系统来说SSH、SSI还是最合理的解决方案。


走出Java的世界,你会发现SSH、SSI并非解决问题的唯一方式。SSH、SSI也并非不好,只是大家更注重性能、扩展、那20%的莫须有的需求,但忽略了开发人员的感受和效率。

说的有理,不过国内环境和国外区别还是很大的。国内就喜欢拿来主义。呵呵。顺便说句,你的头像很帅。


哈哈,这头像是偶像之一
0 请登录后投票
   发表时间:2010-09-29  
xhdwell 写道
jasph77 写道
lpn520 写道
jasph77 写道
没有最好的架构。
适合自己公司业务需求,适合自己团队的开发习惯的就是好框架。

不要埋怨,学着接受它。
等有一天你坐上架构师 这个位置的时候。。。


哥不埋怨,哥来这个公司就是做架构师 , 而且我可从来没有贬低先人的意思


到处都是架构师。。

IT6年了
还是写程序的

兄弟,杭州哪家公司的啊。6年改转业务或架构了吧。


小公司 半创业中。。
0 请登录后投票
   发表时间:2010-09-29  
lpn520 写道
jasph77 写道
构架师 自然有架构师考虑。。
要不然人家怎么坐上这个位置,你还是一个普通的程序员。
架构师也是个人,他的架构必然也有不完美地方。

最讨厌那种,整天说这个不好、那个行,自己又没解决方案。


给你看看我之前做的解决方案,同样“添加删除修改查询”,同样是Struts2+Spring+iBATIS+ExtJs

前端
helloWorld.jsp       //用过Ext的都知道,页面是不需要写HTML代码的,所以helloWorld.js直接可以省掉,直接把js写在jsp文件里,还有用EXT直接使用原生态的,封装一层只的很恶心

业务层
HelloWorldAction.java     //struts2的Action,本身就是动作的意思,为什么它不叫Controllor呢,因为控制类已经在它内部封装好了,你实现了Action接口,只要在类里写业务就可以了,再加上struts2每<script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/themes/advanced/langs/zh.js"></script><script type="text/javascript" src="http://www.iteye.com/javascripts/tinymce/plugins/javaeye/langs/zh.js"></script>个请求可以对应到Action的一个个方法上,所以万恶的HelloWorldServer.java和HelloWorldServerImp.java可以去掉了

DAO层
再讨论一下DAO层,我们用了ibatis框架,他本身就是个DAO层的实现,你每个SQL调起来就像调用DAO里的每个方法一样,所以HelloWordDao.java就可以去掉了,像HelloWordDao.java里的每个方法就一条代码,有意思吗
所以只要下面两个文件就可以了
HelloWord.java          //HelloWord表的ORM的对象
HelloWord.xml           //HelloWord表操作的SQL语句,ibatis的sqlmap




JSP里应该避免写任何的JS

Action存在的意义是控制前端和后端的数据交互和数据校验,在里面写那么多业务逻辑代码算什么

service是实现业务逻辑的一层,负责逻辑和组织调用DAO里面的方法

DAO是实现简单逻辑和对数据库直接操作的一层,这个是可以泛型化的

你要真想简单,那么直接都写在JSP里直接调用数据库得了
0 请登录后投票
论坛首页 Java企业应用版

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