优雅的代码:将处理用户界面和处理业务逻辑的代码分开

本文介绍了一个分层良好的系统如何将用户界面与业务逻辑分离,并通过SpringMVC架构下的实例展示了具体的实现方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一个分层良好的系统,应该将处理用户界面和处理业务逻辑的代码分开。之所以这么做,原因有以下几点:

(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){
        //业务代码数据处理
    }
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值