封装状态信息码
1,创建枚举类设置状态码
public enum AjaxStatus {
OK(20000, "操作成功"),
ERROR(50000, "操作失败"),
?
////登录状态相关的状态码
EMAIL_NOT_FOUND(30000, "邮箱错误"),
ADMIN_NOT_FOUND(30001, "用户未激活");
?
private int status;
private String message;
?
//提供全参构造,不提供无参构造 ,状态码和信息不能为空
AjaxStatus(int status, String message) {
this.status = status;
this.message = message;
}
?
//提供get方法,不提供set方法,值固定不可以设置
public int getStatus() {
return status;
}
?
public String getMessage() {
return message;
}
}
2,提供结果集用来封装状态码
public class AjaxResult extends HashMap<String, Object> {
//把字符串定义成常量,final修饰不可更改,以后直接用,防止字符串过多打错
public static final String STATUS = "status";
public static final String MESSAGE = "message";
public static final String DATA = "data";
?
//只提供一个构造器且只能传入枚举类的状态码信息
// 并且用私有的修饰,不提供给外部传入数值
private AjaxResult(AjaxStatus ajaxStatus) {
this.put(STATUS, ajaxStatus.getStatus());
this.put(MESSAGE, ajaxStatus.getMessage());
}
?
// 操作成功的方法
// 使用静态方法修饰 用的时候直接类点静态方法
public static AjaxResult sucess() {
AjaxResult ajaxResult = new AjaxResult(AjaxStatus.OK);
return ajaxResult;
}
?
// 操作成功并且携带数据的方法
public static AjaxResult sucess(Object data) {
AjaxResult ajaxResult = new AjaxResult(AjaxStatus.OK);
ajaxResult.put(DATA, data);
return ajaxResult;
}
?
// 操作失败的方法
public static AjaxResult error() {
return new AjaxResult(AjaxStatus.ERROR);
}
// 自定义操作失败的方法
// 失败的方法多种多样,有可能是邮箱不存在,有可能邮箱未激活等等
// 可以在枚举类中定义多种多样的AjaxStatus值
public static AjaxResult error(AjaxStatus ajaxStatus){
return new AjaxResult(ajaxStatus);
}
}
3,外部调用
public class TestStatus {
public static void main(String[] args) {
System.out.println(AjaxResult.error(AjaxStatus.ADMIN_NOT_FOUND));
System.out.println(AjaxResult.error(AjaxStatus.EMAIL_NOT_FOUND));
System.out.println(AjaxResult.error());
System.out.println(AjaxResult.sucess());
System.out.println(AjaxResult.sucess("完成"));
}
}