优雅的代码:将处理用户界面和处理业务逻辑的代码分开
2017-07-14 00:38
295 查看
一个分层良好的系统,应该将处理用户界面和处理业务逻辑的代码分开。之所以这么做,原因有以下几点:
(1)你可能需要使用不同的用户界面来表现相同的业务逻辑,如果同时承担两种责任,用户界面会变得过分复杂;
(2)与GUI隔离之后,领域对象的维护和演化都会更容易,你甚至可以让不同的开发者负责不同部分的开发。
举个栗子:
比如,我们做一个用户列表信息页面,该页面需要实现对用户信息的增删改查。
在这个例子中,与用户界面相关的有用户的增删改查跳转页面相关,而与业务相关的是对增删改查数据处理。对于Spring MVC 架构,我们可以在控制层写两个控制类,一个是专门处理页面跳转相关的UserPageController类,另一个是数据处理相关的UserApiController类。具体实现代码如下:
1)跳转页面控制器
2)业务数据处理控制器
(1)你可能需要使用不同的用户界面来表现相同的业务逻辑,如果同时承担两种责任,用户界面会变得过分复杂;
(2)与GUI隔离之后,领域对象的维护和演化都会更容易,你甚至可以让不同的开发者负责不同部分的开发。
举个栗子:
比如,我们做一个用户列表信息页面,该页面需要实现对用户信息的增删改查。
在这个例子中,与用户界面相关的有用户的增删改查跳转页面相关,而与业务相关的是对增删改查数据处理。对于Spring MVC 架构,我们可以在控制层写两个控制类,一个是专门处理页面跳转相关的UserPageController类,另一个是数据处理相关的UserApiController类。具体实现代码如下:
1)跳转页面控制器
/** * 跳转页面等相关处理控制器 * @author tim * @date 2017年7月9日 */ @RequestMapping("/userPage/") @Controller public class UserPageController { @RequestMapping("goUserList") public String goUserList(String id, Model model){ //其它需要跳转前的数据处理 model.addAttribute("id", id); return "/modules/user/list"; } @RequestMapping("goUserAdd") public String goUserAdd(String id, Model model){ //其他需要跳转前的数据处理 model.addAttribute("id", id); return "/modules/user/add"; } }
2)业务数据处理控制器
/** * 业务数据处理控制器 * @author tim * @date 2017年7月9日 */ @RequestMapping("/userApi/") @Controller public class UserApiController { @RequestMapping("getUserData") @ResponseBody public ResponseData getUserData(String id){ ResponseData responseData = new ResponseData(); //业务代码获取数据处理 return responseData; } @RequestMapping("addUser") @ResponseBody public void addUser(String id){ //业务代码数据处理 } }
相关文章推荐
- 【JavaWeb-9】MVC设计模式、处理业务逻辑代码的分层思想、目录结构参照、实践案例
- Servlet返回响应和执行业务逻辑代码分开
- 如何进行界面和业务逻辑分开的原型化开发
- 业务逻辑处理顺序
- 阅读天龙八部的代码有感----两种逻辑处理模式的比较
- MFC——CTreeCtrl数据的处理:如何将数据和逻辑分开?
- 《编写优雅的前端业务代码》听后感
- 多线程处理list业务逻辑(大数量)
- 【网络编程】用有限状态机来处理业务逻辑
- 优雅的C++代码:不放过任何一条编译器警告(如何处理第三方库中的警告)
- 如何利用动态URL提升SEO及处理业务逻辑
- 事务并发处理: DB+ORM+逻辑代码
- 用户界面与业务逻辑的分离
- java如何异步方式处理业务逻辑
- php中,控制器如何调用模型来处理业务逻辑?
- IOS 将逻辑和视图分开 代码易读性和复用性大大增加
- 使用html来定制编辑页面,不需要写代码就可以实现业务处理的界面
- Cocos2d-x游戏开发之代码如何识别ios平台与android并分开处理
- Prototype功能预览六:业务数据与处理代码集中管理的工作流水线
- 4.Strut国际化动态文本(编程式处理异常)::业务逻辑层