作用:分离复杂对象的构建和表示。
同样的构建过程可以创建不同的表示,无需记忆,自然使用。
public class Main {
    public static void main(String[] args) {
        //Effective Java
        Person p = new Person.PersonBuilder()
                .basicInfo(1, "zhangsan", 18)
                .score(20)
                .weight(200)
                .loc("bj", "23")
                .build();
    }
}
public class Person {
    int id;
    String name;
    int age;
    double weight;
    int score;
    Location loc;
    private Person() {}
    public static class PersonBuilder {
        Person p = new Person();
        public PersonBuilder basicInfo(int id, String name, int age) {
            p.id = id;
            p.name = name;
            p.age = age;
            return this;
        }
        public PersonBuilder weight(double weight) {
            p.weight = weight;
            return this;
        }
        public PersonBuilder score(int score) {
            p.score = score;
            return this;
        }
        public PersonBuilder loc(String street, String roomNo) {
            p.loc = new Location(street, roomNo);
            return this;
        }
        public Person build() {
            return p;
        }
    }
}
class Location {
    String street;
    String roomNo;
    public Location(String street, String roomNo) {
        this.street = street;
        this.roomNo = roomNo;
    }
}

 京公网安备 11010502036488号
京公网安备 11010502036488号