一个分层良好的系统,应该将处理用户界面和处理业务逻辑的代码分开。之所以这么做,原因有以下几点:
(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){
//业务代码数据处理
}
}