【圖解設計模式系列】The Builder Pattern: 建造者模式
阿新 • • 發佈:2021-01-12
技術標籤:Design Pattern
建立者模式使用多個簡單的物件一步一步構建成一個複雜的物件。它提供了一種建立物件的最佳方式。一個 Builder 類會一步一步構造最終的物件,該 Builder 類是獨立於其他物件的。
通過描述我們就能才出來一個大概:我們想構造一個比較複雜的物件的話 就需要用到這種模式,比如說我們用RestAPI 返回的那些被封裝的複雜物件。就是用到這種模式。
建立者模式包括以下幾種角色:
- Builder:為建立一個Product物件的各個部件指定抽象介面。
- ConcreteBuilder:實現Builder的介面以構造和裝配該產品的各個部件。定義並明確它所建立的表示。提供一個獲取產品的介面。
- Director:構造一個使用Builder介面的物件。
- Product:表示被構造的複雜物件。ConcreteBuilder建立該產品的內部表示並定義它的裝配過程。包含定義組成部件的類,包括將這些部件裝配成最終產品的介面。
例項
在當前前後端分離已經成為主流開發模式的情況下,Rest API是經常使用到的。在向前段提供Rest介面時,可以對返回結果進行封裝,這裡就可以用到建立者模式。
程式碼
/**
* REST API返回類
*/
public class RestAPIResponse<T> {
// 返回碼
private String code;
// 返回狀態,成功或失敗
private String message;
// 資料
private T data;
// getter/setter
}
建立返回物件的建立者
public class RestAPIResponseBuilder {
/**
* 成功返回,帶資料
*/
public static <T> RestAPIResponse buildSuccessResponse(T data) {
RestAPIResponse response = new RestAPIResponse();
response. setCode("200");
response.setMessage("success");
response.setData(data);
return response;
}
/**
* 失敗返回,不帶資料
*/
public static RestAPIResponse buildFailureResponse(String message) {
RestAPIResponse response = new RestAPIResponse();
response.setCode("404");
response.setMessage(message);
response.setData(null);
return response;
}
}
客戶端public class Client {
public static void main(String[] args) {
/*********************沒有加返回接收******************/
//返回成功
RestAPIResponse response = RestAPIResponseBuilder.buildSuccessResponse("資料");
System.out.println(response.getCode() + "|" + response.getMessage() + "|" + response.getData());
//返回失敗
RestAPIResponse response2 = RestAPIResponseBuilder.buildFailureResponse("錯誤資訊");
System.out.println(response2.getCode() + "|" + response2.getMessage() + "|" + response2.getData());
}
}