使用链式编程生成数据封装对象

引子

在一个项目中,我们经常会封装请求的返回数据到一个对象中进行返回调用端。最常用的封装方式是直接创建一个类,定义各项实例属性并定义有参构造和Get Set 方法。

@Data
public class ResponseEntity {
    private Boolean success;
    private Integer code;
    private String message;
    private Map<String, Object> data = new HashMap<String, Object>();
	
	public ResponseEntity(Boolean success, Integer code, String message, Map<String, Object> data)  {
		this.success = success;
		this.code = code;
		this.message = message;
		this.data = data;
	}
	...set()...get()...	
}	

但是这种方式中,如果参数列表过长,或者不需要默写参数时,现有的方式显得有些过于臃肿。
从而,我们可以引入链式编程的方法,通过静态方法和方法重载的原理进行实现:

// lombok注解,为实体类生成GetSet方法
@Data
public class ResponseEntity {
    private Boolean success;
    private Integer code;
    private String message;
    private Map<String, Object> data = new HashMap<String, Object>();
    
    //把构造方法私有
    private ResponseEntity() {}

    //成功静态方法
    public static ResponseEntity ok() {
        ResponseEntity r = new ResponseEntity();
        r.setSuccess(true);
        r.setCode(200);
        r.setMessage("成功");
        return r;
    }
    //失败静态方法
    public static ResponseEntity error() {
        ResponseEntity r = new ResponseEntity();
        r.setSuccess(false);
        r.setCode(400);
        r.setMessage("失败");
        return r;
    }

    public ResponseEntity success(Boolean success){
        this.setSuccess(success);
        return this;
    }

    public ResponseEntity message(String message){
        this.setMessage(message);
        return this;
    }

    public ResponseEntity code(Integer code){
        this.setCode(code);
        return this;
    }

    public ResponseEntity data(String key, Object value){
        this.data.put(key, value);
        return this;
    }

    public ResponseEntity data(Map<String, Object> map){
        this.setData(map);
        return this;
    }
}

在使用时可以利用静态方法ok() 或 error()实例化基本的ResponseEntity对象,在利用链式编程填充属性:

ResponseEntity.ok().message("获取用户列表成功!").data("userList",list);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值