锁定老帖子 主题:“过度设计”之真实例子
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间: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里面的业务方法,把后台返回的数据包装成前端用的数据,还有一些数据校验 在实际系统里这个是一个很合理的架构模式 |
|
返回顶楼 | |
发表时间:2010-09-29
最后修改:2010-09-29
matt.u 写道 xhdwell 写道 SSH、SSI确实老土,但我觉得就现在我们的一些业务系统来说SSH、SSI还是最合理的解决方案。
走出Java的世界,你会发现SSH、SSI并非解决问题的唯一方式。SSH、SSI也并非不好,只是大家更注重性能、扩展、那20%的莫须有的需求,但忽略了开发人员的感受和效率。 呵呵,事实上我开发这么久的 经验就是最初的所谓高扩展性设计最后往往 都没有用 。还非常累赘。 天下武功 无坚不摧 唯快不破。将项目合理的分析(细)、模块和结构清晰;最大限度的提高开发效率,“让大象跳舞”,提高应对变化的速度。才是最接近银弹的解决方案。 而这,是编码以外的事情。 |
|
返回顶楼 | |
发表时间:2010-09-29
matt.u 写道 xhdwell 写道 SSH、SSI确实老土,但我觉得就现在我们的一些业务系统来说SSH、SSI还是最合理的解决方案。
走出Java的世界,你会发现SSH、SSI并非解决问题的唯一方式。SSH、SSI也并非不好,只是大家更注重性能、扩展、那20%的莫须有的需求,但忽略了开发人员的感受和效率。 说的有理,不过国内环境和国外区别还是很大的。国内就喜欢拿来主义。呵呵。顺便说句,你的头像很帅。 |
|
返回顶楼 | |
发表时间:2010-09-29
架构很死的东西,一旦架构好了很难修改,能不用最好了。
|
|
返回顶楼 | |
发表时间:2010-09-29
matt.u 写道 xhdwell 写道 SSH、SSI确实老土,但我觉得就现在我们的一些业务系统来说SSH、SSI还是最合理的解决方案。
走出Java的世界,你会发现SSH、SSI并非解决问题的唯一方式。SSH、SSI也并非不好,只是大家更注重性能、扩展、那20%的莫须有的需求,但忽略了开发人员的感受和效率。 真知灼见! |
|
返回顶楼 | |
发表时间:2010-09-29
jasph77 写道 lpn520 写道 jasph77 写道 没有最好的架构。
适合自己公司业务需求,适合自己团队的开发习惯的就是好框架。 不要埋怨,学着接受它。 等有一天你坐上架构师 这个位置的时候。。。 哥不埋怨,哥来这个公司就是做架构师 , 而且我可从来没有贬低先人的意思 到处都是架构师。。 IT6年了 还是写程序的 兄弟,杭州哪家公司的啊。6年改转业务或架构了吧。 |
|
返回顶楼 | |
发表时间:2010-09-29
国外的开源团队正准备在传统开发框架做改革,Grails、Spring Roo、Seam、Play、Lift其实都是大家在对提高开发效率上的尝试。甚至在语言上也在做着改革、Scala、Groovy、JRuby、JPython等的出现也是为了弥补以往使用Java进行开发的不足,所以我们也要吸收新的开发观念,破旧立新。这些才能推动技术的发展。
|
|
返回顶楼 | |
发表时间:2010-09-29
xhdwell 写道 matt.u 写道 xhdwell 写道 SSH、SSI确实老土,但我觉得就现在我们的一些业务系统来说SSH、SSI还是最合理的解决方案。
走出Java的世界,你会发现SSH、SSI并非解决问题的唯一方式。SSH、SSI也并非不好,只是大家更注重性能、扩展、那20%的莫须有的需求,但忽略了开发人员的感受和效率。 说的有理,不过国内环境和国外区别还是很大的。国内就喜欢拿来主义。呵呵。顺便说句,你的头像很帅。 哈哈,这头像是偶像之一 |
|
返回顶楼 | |
发表时间:2010-09-29
xhdwell 写道 jasph77 写道 lpn520 写道 jasph77 写道 没有最好的架构。
适合自己公司业务需求,适合自己团队的开发习惯的就是好框架。 不要埋怨,学着接受它。 等有一天你坐上架构师 这个位置的时候。。。 哥不埋怨,哥来这个公司就是做架构师 , 而且我可从来没有贬低先人的意思 到处都是架构师。。 IT6年了 还是写程序的 兄弟,杭州哪家公司的啊。6年改转业务或架构了吧。 小公司 半创业中。。 |
|
返回顶楼 | |
发表时间: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里直接调用数据库得了 |
|
返回顶楼 | |