溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何用 Java Builder 模式構建復雜對象

發布時間:2025-01-23 19:40:41 來源:億速云 閱讀:164 作者:小樊 欄目:編程語言

在Java中,Builder模式是一種創建具有許多可選參數的對象的設計模式

  1. 創建一個靜態內部類(Builder),該類包含與復雜對象相同的屬性。
  2. 在Builder類中為每個屬性創建setter方法。這些方法允許用戶設置屬性的值。
  3. 在Builder類中創建一個build()方法,該方法返回一個使用當前屬性值構建的復雜對象實例。
  4. 在復雜對象的構造函數中,將Builder類的實例的屬性值賦給復雜對象的相應屬性。
  5. (可選)為Builder類添加一個名為of()的靜態工廠方法,該方法接受一個復雜對象作為參數,并返回一個包含該對象所有屬性的Builder實例。

以下是一個使用Builder模式構建復雜對象的示例:

public class Person {
    private String name;
    private int age;
    private String address;
    private String phoneNumber;

    private Person(Builder builder) {
        this.name = builder.name;
        this.age = builder.age;
        this.address = builder.address;
        this.phoneNumber = builder.phoneNumber;
    }

    public static class Builder {
        private String name;
        private int age;
        private String address;
        private String phoneNumber;

        public Builder name(String name) {
            this.name = name;
            return this;
        }

        public Builder age(int age) {
            this.age = age;
            return this;
        }

        public Builder address(String address) {
            this.address = address;
            return this;
        }

        public Builder phoneNumber(String phoneNumber) {
            this.phoneNumber = phoneNumber;
            return this;
        }

        public Person build() {
            return new Person(this);
        }

        public static Builder of(Person person) {
            Builder builder = new Builder();
            builder.name = person.name;
            builder.age = person.age;
            builder.address = person.address;
            builder.phoneNumber = person.phoneNumber;
            return builder;
        }
    }
}

使用示例:

Person person = Person.Builder.of(new Person("John Doe"))
        .age(30)
        .address("123 Main St")
        .phoneNumber("555-1234")
        .build();

這個示例中,我們創建了一個名為Person的復雜對象,它具有四個屬性:name、age、address和phoneNumber。我們使用Builder模式構建了這個對象,并通過鏈式調用setter方法設置屬性值。最后,我們調用build()方法創建一個Person實例。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女