MVC职责

1: dao层不应该有太多业务逻辑,比如,一个方法就只保存一个数据库表操作. 对比了一下 JourneyDao 太多的业务处理了

2: 面向对象尽量还是多用对象具体化,少使用hashmap,现在暂时分为3层对象

1:vo 专门负责 request对象

2: model:  将接收进来的vo对象转化 ,比如传进来的是一些

3:po  只跟数据库有关系,且字段都跟数据要一致 ,没有冗余

这么做的原因是:1:有时候我们查询的一些数据,到前台的显示都完全不太一致, 所以就有了model和vo之间的转换

2: model和po之间的转换,是为了不污染数据操作层,比如dao写业务逻辑.所以我们的model可以冗余各种list对象 ,比如journey冗余List<Address>

3:尽量每个接口都使用泛型,第一眼就能看出这个接口返回了什么对象,然后也可以点击进去看.而不是map对象或者Object对象.比如行程接口,我必须返回

Journey对象,其他的附属对象List<Address>嵌套在对象里面,而不是使用List嵌套hashmap.这个就完全没有可读性而言了.对于开发来调用者来说.

就必须一个一个方法查找,找到对应的key,而且不能写错.

4:对于一个对象的新增.或者修改方法,无论多少个字段,在dao层只写一个方法, 只是根据对象字段是不是为空逐个去更新.而不是修改一个字段,新增一条sql,这样写的话,就会很难维护了.

5:对于数据库查询也是,如果单表查询,应该也是dao只写一个方法,只是传输不同的查询对象Critetai进来,建议最好也还是不要用hashmap,

所以对于单表操作,在业务不是很复杂的情况下,大多数情况下会是单表的增删该查. 所以如果使用4和5的话,将会节约很多时间,和减少很多不必要的bug,而且也好维护

6:代码中尽量减少,if XX==null的判断 和 list.size的判断,所以我们在查询的时候 就返回一个size为0的对象 .(因为NULL本来就是程序设计上的一个缺陷)

7:业务代码中尽量不要写死代码,最典型的就是类型,type=1 type=2 ,都应该改成枚举 .现在journey里面有很多这样的情况,后续改进

8:分页组件也需要好好优化一下,  现在的分页,必须要自己手动写2条sql,一条查询信息,一条查总数, 按照道理应该只写一条就可以了,另外一条,只不过是吧* 该成count.

9:对于代码中sql查询出来的list,需要做model和po转换的,最好不要写在service里面,一来显得 代码杂乱,二来不好公用 .

MVC的职责应该更加明确,各层的耦合度就越低,越低的话,可读性高(都是同样的一个套路来的),可维护性强(controller想换springmvc就Springmvc,想struts2就struts2,service想换dubbo就dubbo,想换probuf就换probuf,dao想换mybatis就换mybatis,想换hibernate就hibernate)

1:dao层只专注做某个数据库的增删改查 ,所以dao层,只传入跟数据库有关联的po对象.这样dao层的就不会显得臃肿了,简单的做一件事情,出错的话,也就好排查问题,而且对于扩展就更加方便了,因为没有跟业务代码耦合

所以dao只专注数据库的增删改查: 1:单表操作只传入PO对象,对应一条sql语句

2:对于多表查询,也只是传入一个sql需要执行的参数对象。

2:service也只尽量写跟业务逻辑有关联的一些操作,对于类似 po和model这类的转换,虽然也是service应该做的,但是我们还是把它抽出来一个util,这样service也不会显得臃肿,而且util可以复用.

所以service只做几件事情:1 接收controller的参数,进行一些参数合法验证,尽早抛出异常

2:执行一些业务逻辑之后,将controller传过来的对象,转换成为dao层需要操作的po对象

3:调用dao执行

3:对于controller层,我们也不应该耦合一些业务流程,它只负责把数据拿出去显示,所以,我们接收到service返回的model对象.我们唯一要做的就是,可能前端显示的跟我们返回的不一样,比如性别service返回0 或者1

而前端要显示男和女,这样转换就需要我们去做了,

所以controller只做几件事情: 1:接收前端传过来的参数,进行一些字段的合法性验证

2: 操作权限等等的一些验证,比如登陆权限 ,频率控制等等

3:接收service返回的对象,重新组装试图数据返回.

4:

时间: 2024-11-04 18:44:52

MVC职责的相关文章

经验总结44-java和c#的一些联想

重新做回java,看了下公司的项目. 1.网站做成了全静态页面,使用freemarker进行静态化. 任何修改或数据修改,都需要后台生成一遍静态页面,这样前台可以直接访问页面,不需要请求,除非一些动态的必要数据再进行ajax请求. 之前做c#使用的是控制请求路径,一旦访问就生成静态文件,这件不需要统一生成文件. 希望这方面java有所提升,也可能我不清楚还有其他技术. 2.mvc职责. 以前做java时,就发现action处理跳转,不处理逻辑,service来处理逻辑. 然后这边的项目分得不够清

前后端分离开发与跨域问题

前后端分离 传统开发方式 曾几何时,JSP和Servlet为Java带来了无限风光,一时间大红大紫,但随着互联网的不断发展,这样的开发方式逐渐显露其弊端,在移动互联网炙手可热的今天,应用程序对于后台服务的要求发生了巨大的变化; 传统的项目开发与交互流程: 在传统的web开发中,页面展示的内容以及页面之间的跳转逻辑,全都由后台来控制,这导致了前后端耦合度非常高,耦合度高则意味着,扩展性差,维护性差,等等问题 传统开发的问题如下: 耦合度高 调试麻烦,出现问题时往往需要前后台一起检查 开发效率低,前

谈谈service层在mvc框架中的意义和职责

mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层设计,各层之间职责分明.然而事与愿违,当我们日积月累的基于mvc模式开发之后,会逐渐的感受到层与层之间存在粘连和职责模棱两可的地方,这就是service层出现的重要原因. 问题是什么 要提出解决方案,重要的是发现问题的本质.mvc模式在实践过程中,主要面临下面几个难受的问题: 在C层直接实现业务逻辑,这将

Service层在MVC框架中的意义和职责

https://blog.csdn.net/u012562943/article/details/53462157 mvc框架由model,view,controller组成,执行流程一般是:在controller访问model获取数据,通过view渲染页面. mvc模式是web开发中的基础模式,采用的是分层设计,各层之间职责分明.然而事与愿违,当我们日积月累的基于mvc模式开发之后,会逐渐的感受到层与层之间存在粘连和职责模棱两可的地方,这就是service层出现的重要原因. 问题是什么要提出解

MVC各层的职责

Model(模型):模型代表着核心的业务逻辑和数据(不要理解成Model只是实体类) View(视图):视图应该关注与如何展示数据,而不应该包含任何业务逻辑(业务逻辑应写在Model中) Controller(控制器):控制器控制着程序的逻辑,并充当着视图和模型之间的协调角色.控制器从视图层接收用户输入的信息,然后使用模型来执行特定的操作,并把最终的结果回传给视图 MVC遵循"分离关注点"原则:Model负责业务逻辑和数据,View负责显示数据,而Controller则是负责将前两者串

Model2架构上MVC各负的职责

在Model2的架构上,仍然把程序职责分为模型(Model).视图(View).控制器(Controller).它们各自的职责如下: 控制器:取得请求参数.验证请求参数.转发请求给模型.转发请求给画面(这些都是用程序代码来实现). 模   型:接受控制器的请求调用,负责处理业务逻辑.负责数据存取逻辑等. 视   图:接受控制器的请求调用,会从模型提取运算后的结果,根据需求呈现所需的画面,在职责分配良好的情况下基本上可以做到不出现程序代码.

MVC,MVP 和 MVVM 的图示 引用地址(http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html)

分类: 开发者手册 MVC,MVP 和 MVVM 的图示 作者: 阮一峰 日期: 2015年2月 1日 复杂的软件必须有清晰合理的架构,否则无法开发和维护. MVC(Model-View-Controller)是最常见的软件架构之一,业界有着广泛应用.它本身很容易理解,但是要讲清楚,它与衍生的 MVP 和 MVVM 架构的区别就不容易了. 昨天晚上,我读了<Scaling Isomorphic Javascript Code>,突然意识到,它们的区别非常简单.我用几段话,就可以说清. (题图:

Spring学习总结(2.3)-Spring MVC:handlerAdapter

前面一篇博客介绍了HandlerMapping这个组件,它负责的是定位请求处理器Handler.这是SpringMvc处理流程的第二步.那么,当定位到Handler之后,DispatcherServlet会将得到的Handler告知HandlerAdapter,HandlerAdapter再根据请求去定位请求的具体处理方法是哪一个. 职责 在HandlerMapping返回处理请求的Controller实例后,需要一个帮助定位具体请求方法的处理类,这个类就是HandlerAdapter,Hand

iOS开发与设计模式 - MVC

iOS开发与设计模式 - MVC 最近在学习GoF的设计模式这本书,粗略的浏览了一遍,真是好书.好书就应该好好读,因此很有必要从实际的言语.项目理解设计模式. 我是做iOS开发的,自然就从这方面入手(脑). MVC iOS开发最基本的一个模式就是MVC, M指model,V指view,C指controller,有很多文章对它们是什么,它们的关系,它们如何交互进行了详细的说明,本文就不再展开说明了,仅放一张图供大家参考(来自斯坦福大学ios课程)  ViewController 是什么? 在iOS