论坛首页 Java企业应用论坛

“过度设计”之真实例子

浏览 85165 次
该帖已经被评为新手帖
作者 正文
   发表时间: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每个请求可以对应到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


无语了..那干脆dao也去掉,放进action算了...
0 请登录后投票
   发表时间:2010-09-29  
xhdwell 写道
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



看了这个结构觉得已经很简单了啊。是最正常的分层啊。兄弟,建议你多学点设计思想。就不会问这样的问题了。


我只能说这是一个广泛的分层,至少已经用了10年了吧,10年前可能没这么多框架,那是合理的,但现在这么多框架干嘛的,不就为了让你简化开发,那为么框架用起来了,而设计的思路却还是跟10年前一样呢

0 请登录后投票
   发表时间:2010-09-29   最后修改:2010-09-29
WWQQ 写道
我们的还好 后台CTO一人搞定 , 你想要什么数据 他用JSONArray 返回给你, 然后页面的设计 数据的填充 效果的展示 想怎么弄就怎么弄。 玩转JS 呵呵

这个设计倒是很有新意。非常喜欢。业务、关联数据等的处理你们框架有什么更好的解决办法么?还是老办法?
0 请登录后投票
   发表时间:2010-09-29  
楼主,跳一回槽就明白了。用到Spring的项目,至少一半都是这么做的。

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

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

确实,以前javaeye上有篇文章说的就是别老骂别人的代码烂,说的很在理。在你没完全理解别人设计的思路之前千万不要妄下结论。别人这么设计是有他的道理的,只是有些原因你还不能理解。你在没有完全理解前就说他过度设计只能说你学的还不够。再过2年你就不会这么说了。


兄弟,哪句看到我骂人了
0 请登录后投票
   发表时间:2010-09-29  
同学,我就是用Extjs的,不过从来不会把js代码写在html或者jsp中,还有你准备把所有的js写在一个文件里?我真怀疑你们以前团队是怎么开发出来的和项目是怎么维护的。
0 请登录后投票
   发表时间:2010-09-29  
ggpp224 写道
同学,我就是用Extjs的,不过从来不会把js代码写在html或者jsp中,还有你准备把所有的js写在一个文件里?我真怀疑你们以前团队是怎么开发出来的和项目是怎么维护的。

不用再跟他解释了..就是个新手..
0 请登录后投票
   发表时间:2010-09-29  
lz想回归大自然,把所有代码写进jsp就可以了...
0 请登录后投票
   发表时间:2010-09-29   最后修改:2010-09-29
ggpp224 写道
同学,我就是用Extjs的,不过从来不会把js代码写在html或者jsp中,还有你准备把所有的js写在一个文件里?我真怀疑你们以前团队是怎么开发出来的和项目是怎么维护的。



extjs这样做很合理,因为思想已经非常接近CS了。不过传统的web开发还是写在一起比较好。


extjs我也做了一年呢。


另外我觉得楼主的确是个新手,质疑也是在没有理解原有设计。但是他提出的解决方案其实已经非常接近rails等非常现代的设计了。
0 请登录后投票
   发表时间:2010-09-29  
bonny 写道
呵呵 这个8个文件的设计是比较正常的老式的设计。最近的设计一般都会简化。

helloworld.js这个文件可省,可以写在jsp中,这样减少很多文件,减少很多代码查找和切换快捷键,也减少了http请求数。

service接口可省,直接用实现类即可。这和面向接口设计比较违背,不过多数情况下的确是个累赘。
serviceimpl多数情况下(增删改查)也可以省略掉,action直接调用dao即可。除非有比较复杂的业务操作和多dao关联。


dao可以用泛型简化通用操作,并用代码生成器生成。




这样看来,仅仅需要些的就是jsp  action (serviceimpl) 代码已经非常简化了。


helloworld.js能不能省主要看js的实现是否复杂,我的习惯是分开写,否则JSP会很长,很不好维护。
service接口不能省,他使得业务与控制层完全解耦。
action直接调用dao也不可以,action是control层,主要是负责控制转发的,并不处理业务,如果直接调dao就参与了业务处理,更有可能把事务处理也带进了action中。
分层的好处不在与开发简单,而是便于维护。不要为了开发一时的简便而让你的维护变成一潭没人敢碰的烂泥。
0 请登录后投票
论坛首页 Java企业应用版

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