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("完成"));
}
}