Java的DAO、分层结构、MVC能不能并存于同一本书

DAO(Data Access Object)是最容易理解的,你说你要保存东西到数据库,你还要从数据库里面把数据拿出来,什么按照id获取一条记录啦,根据名字获取啦...这是不是应该封装一下,于是就搞这么一个东东,以后只要是与操作数据库有关的,都去找它。你在看看这个名字,Data Access Object,有那么点感觉了吧。分层结构简单地说就是把整个流程划分开,比如需要根据id获取一个人,你需要拿到id,然后从数据库里面里面取出来,然后用一个漂亮的界面展示给用户;把名字叫xx的都取出来呢,你要拿到名字,从数据库里面取出来,用一个漂亮的界面展示给用户.....干其他的基本也是这个流程吧,从用户那里获取有用的信息,然后你需要验证一下信息有没有问题,或者说对这个信息加工一下,然后呢,去操作数据库,再然后用一个漂亮的界面展示给用户。现在分层有点感觉了吧?一个简单的分层:表示层、业务层、持久层。表示层就是与用户打交道的,比如说你要获取用户传给你的数据,这就是表示层要做的事情,业务层就是实现你自己的业务逻辑,持久层就是把数据进行持久化存储,换句话说就是和数据库打交道,你说DAO在哪层?上面的分层中的每一层都可以单独进行研究,寻找更好地解决方案,比如你的持久层,我不想用数据库了,我想用一个xml文件来保存数据,那你就把持久层换成用XML嘛,其他层不受影响;或者说你觉得用原生jdbc操作数据库烦死了,我想用Hibernate,那你就换Hibernate嘛,对其它层也没有影响嘛。关于表示层,有个最佳实践叫做MVC模式。一定要记住MVC不是上面分的那三个层,他只是表示层的最佳实践。表示层要干嘛?与用户打交道,获取用户传过来的信息该表示层干吧;用户想操作什么东西,这叫业务吧,业务当然要业务层干啊,那么多业务,你具体要干嘛啊,业务层知道吗,他知道个鬼啊,与用户打交道的是你表示层,所以这你表示层得告诉业务层吧,至于业务层具体要怎么干,是要从数据库里面获取点什么还是要怎么样,关你表示层什么事啊,瞎几*操心;业务层把活干完了,上面说的用一个漂亮的界面展示给用户,这还得你表示层干吧。这就是MVC啦,你的数据怎么给人家业务层啊,封装一下嘛,用户给你的是字符串,你弄成一个对象,再传给业务层,是不是感觉萌萌哒,这就是M;业务层那么多业务,你要干哪个啊,这就是C,也叫控制器;最后那个漂亮界面,就是V啦,也叫视图展现。还没出道的小菜鸟已经尽力解释了,出了偏差别怪我.....
■网友
这其实就体现了软件多层架构的思想,将软件逻辑分工细化,降低耦合度,提高代码内聚就比如最常见的mvc模式,就如同它的名字一样,三层分工,视图层仅负责显示,不管业务逻辑,控制层负责业务逻辑,计算出业务结果,模型层负责数据处理。就说一个简单的用户登录,视图层只负责呈现出用户看到的交互界面,并采集用户登录数据,然后将数据传给控制层登录逻辑进行处理,登录逻辑业务再从模型层中拿到指定用户ID进行帐号核对,得到是否用户可以登录的结果,然后调用响应的视图反馈给用户。简单说,视图只管怎么做出来给用户看,不管任何业务层的逻辑,模型层负责处理数据,不管逻辑层要拿去干嘛,反正要就给你,至于你拿去怎么用是你的事,而逻辑层,就是连接两层的桥梁,视图和数据不能直接联系,必须通过逻辑层,模型层只对逻辑层服务,视图层也只能联系到逻辑层


    推荐阅读