1. 程式人生 > >java 建造者Builder設計模式解析

java 建造者Builder設計模式解析

Builder模式介紹

        1.使用者使用簡單,不需要知道內部怎麼建立的

         2.解耦,將構建的過程和表示分離開來

Builder模式的使用場景

        1.相同的方法,不同的執行順序,產生不同的時間結果時。

        2.多個部件或零件,都可以裝配到一個物件中,但是產生的執行結果又不同時。

        3.產品類非常複雜,或者產品類中的呼叫順序不同產生了不同的作用,這個時候用建造者模式非常適合。

        4.當初始化一個物件特別複雜,如引數多,切很多引數都具有預設值時。

Builder好處

      1.提高程式碼可讀性,易懂

      2.方便維護

在表示類中建立個內部類構建類,程式碼實現

public class Student {
    private String name;
    private Integer age;
    private String address;

    public  StudentBuilder StudentBuilder(){
        return  new StudentBuilder();
    }

    Student (StudentBuilder builder){
        this.name = builder.name;
        this.age = builder.age;
        this.address = builder.address;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", age=" + age +
                ", address='" + address + '\'' +
                '}';
    }

    public static class StudentBuilder {
        private String name;
        private Integer age;
        private String address;

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

        public StudentBuilder age(Integer age) {
            this.age = age;
            return this;
        }

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

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

測試程式碼

public  static void main(String[] args){
        Student student = new Student.StudentBuilder()
                                    .name("張三")
                                    .age(18)
                                    .address("北京市")
                                    .build();
        System.out.println(student.toString());
    }