1. 程式人生 > >Java 建造者模式

Java 建造者模式

簡介

建造者模式(Builder Pattern)是使用多個簡單的物件一步一步構建成一個複雜的物件的一種設計模式,是Java23種設計模式中的一種。

使用方式如下:

Student student = new Student.Builder()
            .number(15)
            .name("小明")
            .sex("男")
            .build();

簡單地看來建造者模式的優點無非是靈活, 在新建物件時可以選擇性的傳入引數,同時實現點運算子連綴,增刪方便快捷,可讀性強。

程式碼示例

關於程式碼的實現,網上有很多版本,有新建一個建造者類,也有建立並實現一個建造者介面的,博主本著方便(懶惰)和實用的原則,在需要使用建造者模式的類中增加靜態內部類Builder,定義外部類的物件,並用對應方法傳入該物件的成員變數,最後用build方法返回該物件,建造完畢。

public class Student {

    private int number;
    private String name;
    private String sex;

    public Student() {}
    
    /**
     * 建造者 (靜態內部類)
     */
    public static class Builder {

        private Student student;
        
        public Builder() {
            student = new Student();
        }

        public Builder number(int number) {
            student.number = number;
            //返回this引用實現連綴,下同
            return this;
        }

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

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

        public Student build() {
            //返回該Student物件,建造完畢
            return student;
        }
    }

    public String toString() {
        return String.valueOf(number) + "  " + name + "  " + sex;
    }

    public static void main(String[] args) {
        Student student = new Student.Builder()
            .number(15)
            .name("小明")
            .sex("男")
            .build();
        Student student2 = new Student.Builder()
            .number(16)
            .name("小紅")
            .sex("女")
            .build();
        System.out.println(student.toString());
        System.out.println(student2.toString());
    }
}