设计模式-建造者模式

25 阅读1分钟
@Data
public class PeopleBuilder {

    private People.Leg leg;

    private People.Brain brain;

    public PeopleBuilder leg(String desc) {
        leg = new People.Leg(desc);
        return this;
    }

    public PeopleBuilder brain(String desc) {
        brain = new People.Brain(desc);
        return this;
    }

    public People build() {
        this.leg("leg").brain("brain");
        return People.create(this);
    }


}

@Data
public class People {

    private Brain brain;

    private Leg leg;

    private People() {}

    private People(PeopleBuilder builder) {
        this.brain = builder.getBrain();
        this.leg = builder.getLeg();
    }

    public static People create(PeopleBuilder builder) {
        return new People(builder);
    }

    @Data
    @AllArgsConstructor
    static class Leg {
        private String desc;
    }

    @Data
    @AllArgsConstructor
    static class Brain {
        private String desc;
    }
}
public class Test {

    public static void main(String[] args) {
        People people = new PeopleBuilder().build();
        System.out.println(people);
    }
}