锁定老帖子 主题:“过度设计”之真实例子
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间: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算了... |
|
返回顶楼 | |
发表时间: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年前一样呢 |
|
返回顶楼 | |
发表时间:2010-09-29
最后修改:2010-09-29
WWQQ 写道 我们的还好 后台CTO一人搞定 , 你想要什么数据 他用JSONArray 返回给你, 然后页面的设计 数据的填充 效果的展示 想怎么弄就怎么弄。 玩转JS 呵呵
这个设计倒是很有新意。非常喜欢。业务、关联数据等的处理你们框架有什么更好的解决办法么?还是老办法? |
|
返回顶楼 | |
发表时间:2010-09-29
楼主,跳一回槽就明白了。用到Spring的项目,至少一半都是这么做的。
|
|
返回顶楼 | |
发表时间:2010-09-29
xhdwell 写道 jasph77 写道 构架师 自然有架构师考虑。。
要不然人家怎么坐上这个位置,你还是一个普通的程序员。 架构师也是个人,他的架构必然也有不完美地方。 最讨厌那种,整天说这个不好、那个行,自己又没解决方案。 确实,以前javaeye上有篇文章说的就是别老骂别人的代码烂,说的很在理。在你没完全理解别人设计的思路之前千万不要妄下结论。别人这么设计是有他的道理的,只是有些原因你还不能理解。你在没有完全理解前就说他过度设计只能说你学的还不够。再过2年你就不会这么说了。 兄弟,哪句看到我骂人了 |
|
返回顶楼 | |
发表时间:2010-09-29
同学,我就是用Extjs的,不过从来不会把js代码写在html或者jsp中,还有你准备把所有的js写在一个文件里?我真怀疑你们以前团队是怎么开发出来的和项目是怎么维护的。
|
|
返回顶楼 | |
发表时间:2010-09-29
ggpp224 写道 同学,我就是用Extjs的,不过从来不会把js代码写在html或者jsp中,还有你准备把所有的js写在一个文件里?我真怀疑你们以前团队是怎么开发出来的和项目是怎么维护的。
不用再跟他解释了..就是个新手.. |
|
返回顶楼 | |
发表时间:2010-09-29
lz想回归大自然,把所有代码写进jsp就可以了...
|
|
返回顶楼 | |
发表时间:2010-09-29
最后修改:2010-09-29
ggpp224 写道 同学,我就是用Extjs的,不过从来不会把js代码写在html或者jsp中,还有你准备把所有的js写在一个文件里?我真怀疑你们以前团队是怎么开发出来的和项目是怎么维护的。
extjs这样做很合理,因为思想已经非常接近CS了。不过传统的web开发还是写在一起比较好。 extjs我也做了一年呢。 另外我觉得楼主的确是个新手,质疑也是在没有理解原有设计。但是他提出的解决方案其实已经非常接近rails等非常现代的设计了。 |
|
返回顶楼 | |
发表时间: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中。 分层的好处不在与开发简单,而是便于维护。不要为了开发一时的简便而让你的维护变成一潭没人敢碰的烂泥。 |
|
返回顶楼 | |