论坛首页 Java企业应用论坛

“过度设计”之真实例子

浏览 85325 次
该帖已经被评为新手帖
作者 正文
   发表时间:2010-09-29  
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



这不是很正常的嘛。
0 请登录后投票
   发表时间:2010-09-29  
传说中的应届毕业生!
0 请登录后投票
   发表时间:2010-09-29  
我们的还好 后台CTO一人搞定 , 你想要什么数据 他用JSONArray 返回给你, 然后页面的设计 数据的填充 效果的展示 想怎么弄就怎么弄。 玩转JS 呵呵
0 请登录后投票
   发表时间:2010-09-29  
ggpp224 写道
传说中的应届毕业生!

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

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

确实,以前javaeye上有篇文章说的就是别老骂别人的代码烂,说的很在理。在你没完全理解别人设计的思路之前千万不要妄下结论。别人这么设计是有他的道理的,只是有些原因你还不能理解。你在没有完全理解前就说他过度设计只能说你学的还不够。再过2年你就不会这么说了。
0 请登录后投票
   发表时间: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




看了这个分层,我怎么觉得是你的想法有问题
0 请登录后投票
   发表时间:2010-09-29   最后修改:2010-09-29
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

0 请登录后投票
   发表时间:2010-09-29  
呵呵 这个8个文件的设计是比较正常的老式的设计。最近的设计一般都会简化。

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

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


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




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

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

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

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



同意楼上的, 只要不是像楼主说的紧耦合, 合理的分层是必要的, 也许今天理解不了, 不代表人家的的设计没道理.
0 请登录后投票
论坛首页 Java企业应用版

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