昨天无意间看到一篇关于mvc的博客,然后自己查了下资料,看到很多网上关于mvc及三层架构有不同的解释和说法,其实以前在学习的时候就感觉没搞懂,最近自己工作对这个问题也有一点个人的理解,不知道正确与否,如果有问题希望能指出共同进步。
基本的mvc的字面意思和三层是架构是什么不多说,直接说说个人的见解,我觉得最近在实际的工作中感觉,如果要实现mvc的高内聚低耦合的设计理念,将一个项目分为三层,仅仅将视图和逻辑分开是完全不够的,因为没有将具体业务逻辑和数据库逻辑分离开来,没有贯彻低耦合的思想,当业务需求发生改变需要变更数据库时,需要修改大量代码,后期的维护特别麻烦,个人觉得按照这种分层思想已经不满足如今的需求的,个人理解是mvc应该分为5层,分别是下面这5层。
1.视图层(html/jsp/)等用户能看得到的信息,数据信息的开始和结束。
2.控制层(servlet/action),控制层不处理任何业务(包括业务逻辑和数据库逻辑),只为控制流程,实现跳转功能,只调用service层的结果实现跳转功能,控制层的逻辑更偏向视图层,为视图层提供服务。
3.服务层(service):专门处理业务逻辑,是控制层和DAO的中间过渡层,根据DAO层的返回结果的不同,处理不同的业务逻辑,并将结果向上返回给控制层。
4.DAO层:专门处理各种数据库逻辑,包括对数据库的CRUD,存储过程/函数各种操作,提供访问数据库的接口,DAO层更偏向于model。
5.数据模型层:专门封装数据原始模型(javabean/DTO),本身不提供任何对数据库的操作,只提供接口供DAO层调用数据。
从上到下依次为视图层,控制层,服务层,DAO层,数据模型层。
个人理解,新人刚入门,有错误的地方希望指出共同学习。