1. 程式人生 > 其它 >【圖解設計模式系列】The Builder Pattern: 建造者模式

【圖解設計模式系列】The Builder Pattern: 建造者模式

技術標籤: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());
    }

}