日期:2014-05-17  浏览次数:20760 次

为什么程序后台架构要分三层
为什么程序后台架构要分三层,action,service,dao,我觉得action和dao两层就够了,为什么还多个service,不是多点麻烦吗,请大侠指教

------解决方案--------------------
探讨
为什么程序后台架构要分三层,action,service,dao,我觉得action和dao两层就够了,为什么还多个service,不是多点麻烦吗,请大侠指教

------解决方案--------------------
觉得action和dao两层就够了
是因为你的业务逻辑很简单。就是简单的CRUD

当你系统业务逻辑很复杂时,你不能都将业务逻辑放到dao吧。很难维护。
------解决方案--------------------
大哥, 如果你是大型的项目用三层的话,维护起来好维护, 而且如果二次开发也比较简单,直接在底层写好,最后调用就行了, 看你就是新手吧!!!!
以后你慢慢就明白了 , 做的多了,就知道其中好处的所在。
------解决方案--------------------
就是说的MVC框架呗。
MVC 包含三个基础部分:Model、View 和 Controller,这三个部分以最小的耦合协同 工作,以增加程序的可扩展性和可维护性。各个部分的实现技术可以总结如下: 1)Model:JavaBean、EJB 的 EntityBean 2)View:JSP、Struts 的 TagLib 3)Controller:Struts 的 ActionServlet、Action 概括起来 MVC 的优点主要有一下方面: 1)多个视图可以对应一个模型。按 MVC 设计模式,一个模型对应多个视图,可以减 少代码的复制及代码的维护量,一旦模型发生改变,也易于维护 2)模型返回的数据与显示逻辑分离。模型数据可以应用任何的显示技术,例如,使用 JSP 页面、Velocity 模板或者直接产生 Excel 文档等 3)应用被分隔为三层,降低了各层之间的耦合,提供了应用的可扩展性 4)控制层的概念也很有效,由于它把不同的模型和不同的视图组合在一起,完成不同 的请求。因此,控制层可以说是包含了用户请求权限的概念 5)MVC 更符合软件工程化管理的精神。不同的层各司其职,每一层的组件具有相同 的特征,有利于通过工程化和工具化产生管理程序代码
------解决方案--------------------
举个例子

你dao可以有个功能 召唤一个怪物出来
你action有个功能 输出这个怪物
但是你的这个怪物从召唤到输出可能经行了很多不同的处理

比如,给怪物安个大炮
给怪物装个翅膀之类的

你要输出不同的怪物,就要写很多action
如果你把怪物的处理放在service里面
你的输出怪物的action就可以重用
你的处理怪物的Service也可以重用

两全其美

但是你的怪物本身就很简单不用做什么处理
那就没必要了
------解决方案--------------------
这样说吧,写程序就如同盖房子,盖个大厦,肯定需要图纸,架构在这里就是图纸,而这时,光有图纸,不可能盖好房子,还需要框架,就像大厦的支架一样,我们只需要按照框架走,填上水泥或安上窗户,就可以了。。。但是盖个小茅草屋就不需要这么费事了,不知道lz明白了没有。。。
------解决方案--------------------
我的理解呢,java分层就是为了便于分块开发
每层有每层的用处,举个例子,你现在是bs架构,你用action+dao层,没问题,可以实现
等过两天,老板说了,我们要用android项目了,你说你是不还得改action层?然后调用dao?
如果三层或者更多层就没有这么麻烦了。你要用android项目,但是我的数据都是由service生成的,可以使用啊,不用的仅仅是action层的一些代码,组织数据什么的,由service和dao层解决就好了嘛
------解决方案--------------------
分层一般都是按对象的功能或职责来划分的。 目的是使结构更清晰,系统更容易维护。

套用策略模式来解释

action用来组织表示层需要展示的数据。把数据读写的规则剥离出来放到service层的对象中。

毕竟很多系统的功能不仅仅是简单的读写数据,在读写的过程中还要进行很多的业务计算。
------解决方案--------------------
探讨
引用:
就是说的MVC框架呗。
MVC 包含三个基础部分:Model、View 和 Controller,这三个部分以最小的耦合协同 工作,以增加程序的可扩展性和可维护性。各个部分的实现技术可以总结如下: 1)Model:JavaBean、EJB 的 EntityBean 2)View:JSP、Struts 的 TagLib 3)Controller:S……