日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

java model 封装_Java封装统一的Result Model案例

發布時間:2025/3/15 java 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java model 封装_Java封装统一的Result Model案例 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在開發過程中,有時候會需要使用錯誤碼+錯誤信息的形式,來返回某些業務操作的錯誤結果信息,來代替效率較低的異常傳遞。

這樣就需要封裝一個統一的Result model作為返回值,代替直接返回數據等結果。

1.定義錯誤碼 - 錯誤信息接口

錯誤碼可能是String、Integer、Long 等類型,也可能是enum類型。因此這里使用泛型來代替,錯誤碼類型,可以提高靈活性

。也可以通過枚舉直接實現CodeMessage接口。

public interface CodeMessage{

C getCode();

String getMessage();

}

2.實現Result Model

這里定義的是service層的Result。有時候在controller層只會作一些簡單的參數校驗,在service層會作進一步的校驗,

如果controller中需要統一返回一個JsonResult可以將ServiceResult作一個簡單的轉換器進行轉換。

public class ServiceResult implements Serializable {

public static final CodeMessage SUCCESS = new DefaultMessage<>("00000000", "success");

private T data;

private CodeMessage message;

private boolean isSuccess;

ServiceResult(T data, boolean isSuccess, CodeMessage message) {

this.data = data;

this.message = message;

this.isSuccess = isSuccess;

}

public T getData() {

return data;

}

public CodeMessage getCodeMessage() {

return message;

}

public boolean isSuccess() {

return isSuccess;

}

public static ServiceResultBuilder success() {

ServiceResultBuilder builder = builder();

return builder.isSuccess(true);

}

public static ServiceResultBuilder success(CodeMessage codeMessage) {

ServiceResultBuilder builder = builder();

return builder.isSuccess(true).code(codeMessage.getCode()).message(codeMessage.getMessage());

}

public static ServiceResult success(D data) {

ServiceResultBuilder success = success(SUCCESS);

return success.data(data).build();

}

public static ServiceResult error(CodeMessage codeMessage) {

ServiceResultBuilder builder = builder();

return builder.isSuccess(false).code(codeMessage.getCode()).message(codeMessage.getMessage()).build();

}

public static ServiceResultBuilder error() {

ServiceResultBuilder builder = builder();

return builder.isSuccess(false);

}

static ServiceResultBuilder builder() {

return new ServiceResultBuilder<>();

}

public static class DefaultMessage implements CodeMessage, java.io.Serializable {

private C code;

private String message;

public DefaultMessage(C code, String message) {

this.code = code;

this.message = message;

}

@Override

public C getCode() {

return code;

}

@Override

public String getMessage() {

return message;

}

@Override

public String toString() {

return "DefaultMessage{" +

"code=" + code +

", message='" + message + '\'' +

'}';

}

}

public static class ServiceResultBuilder {

private T data;

private C code;

private String message;

private boolean isSuccess;

ServiceResultBuilder() { //package private

}

public ServiceResultBuilder data(T data) {

this.data = data;

return this;

}

ServiceResultBuilder isSuccess(boolean isSuccess) {

this.isSuccess = isSuccess;

return this;

}

public ServiceResultBuilder code(C code) {

this.code = code;

return this;

}

public ServiceResultBuilder message(String message) {

this.message = message;

return this;

}

public ServiceResult build() {

Objects.requireNonNull(code, "code");

Objects.requireNonNull(code, "message");

return new ServiceResult<>(data, isSuccess, new DefaultMessage<>(code, message));

}

}

@Override

public String toString() {

return "ServiceResult{" +

"data=" + data +

", message=" + message +

", isSuccess=" + isSuccess +

'}';

}

}

3.使用

定義枚舉錯誤碼

pubilc enum CodeMessageEnum implements CodeMessage {

some_error(1001, "錯誤信息。");

Integer code;

String message;

CodeMessageEnum(Integer code, String message) {

this.code = code;

this.message = message;

}

@Override

public Integer getCode() {

return code;

}

@Override

public String getMessage() {

return message;

}

}

//返回正確結果帶返回值。

ServiceResult, String> s = ServiceResult.success(Arrays.asList("1", "2", "3"));

s.isSuccess(); //true

ServiceResult, Integer> e1 = ServiceResult.error(CodeMessageEnum.some_error);

e1.isSuccess(); //false

ServiceResult, Long> e2 = ServiceResult.error(new ServiceResult.DefaultMessage<>(1000L, "error"));

e2.isSuccess(); //false

//ServiceResult{data=[1, 2, 3], message=DefaultMessage{code=00000000, message='success'}, isSuccess=true}

System.out.println(s);

//ServiceResult{data=null, message=DefaultMessage{code=1001, message='錯誤信息。'}, isSuccess=false}

System.out.println(e1);

//ServiceResult{data=null, message=DefaultMessage{code=1000, message='error'}, isSuccess=false}

System.out.println(e2);

補充知識:java 封裝返回結果實體類 返回結果以及錯誤信息

我就廢話不多說了,大家還是直接看代碼吧~

public class ResponseMessage {

private final static String STATUS_OK = "0";

private final static String STATUS_ERROR = "1";

private String status; // 狀態

private Object data; // 返回值

private Exception e; // 異常類捕獲

private String msg; // 自定義信息

public String getStatus() {

return status;

}

public void setStatus(String status) {

this.status = status;

}

public Object getData() {

return data;

}

public void setData(Object data) {

this.data = data;

}

public Exception getE() {

return e;

}

public void setE(Exception e) {

this.e = e;

}

public String getMsg() {

return msg;

}

public void setMsg(String msg) {

this.msg = msg;

}

public ResponseMessage() {

super();

}

public ResponseMessage(String status, Object data, Exception e, String msg) {

super();

this.status = status;

this.data = data;

this.e = e;

this.msg = msg;

}

/**

* 成功的結果

* @param data 返回結果

* @param msg 返回信息

*/

public static ResponseMessage newOkInstance(Object data, String msg) {

return new ResponseMessage(ResponseMessage.STATUS_OK, data, null, msg);

}

/**

* 成功的結果

* @param data 返回結果

*/

public ResponseMessage newOkInstance(Object data) {

return new ResponseMessage(ResponseMessage.STATUS_OK, data, null, null);

}

/**

* 失敗的結果

* @param msg 返回信息

*/

public static ResponseMessage newErrorInstance(String msg) {

return new ResponseMessage(ResponseMessage.STATUS_ERROR, null, null, msg);

}

/**

* 失敗的結果

* @param e 異常對象

* @param msg 返回信息

*/

public static ResponseMessage newErrorInstance(Exception e, String msg) {

return new ResponseMessage(ResponseMessage.STATUS_ERROR, null, e, msg);

}

}

以上這篇Java封裝統一的Result Model案例就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持龍方網絡。

總結

以上是生活随笔為你收集整理的java model 封装_Java封装统一的Result Model案例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。