복잡한 객체를 단계별로 구성(조립)할 수 있게 하는 생성 패턴
특히 필드가 많은 객체를 깔끔하고 명확하게 생성할 때 유용
//Member 객체 [생성]!!
Member m1 = new Member();
m1.setSeq(1L);
m1.setName("강아지");
m1.setAge(2);
m1.setAddress("서울시");
m1.setGender("m");
Student s1 = Student.builder()
.seq(6L)
.name("타조")
.address("제주시")
.age(5)
.gender("f")
.build();
public class Member {
private String name;
private int age;
private String job;
private String address;
// 2. private 생성자 추가
private Member(Builder builder) {
this.name = builder.name;
this.age = builder.age;
this.job = builder.job;
this.address = builder.address;
}
// 3. static Builder 클래스 만들기
public static class Builder {
private String name;
private int age;
private String job;
private String address;
public Builder name(String name) {
this.name = name;
return this; // ⭐ return this → 체이닝 가능
}
public Builder age(int age) {
this.age = age;
return this;
}
public Builder job(String job) {
this.job = job;
return this;
}
public Builder address(String address) {
this.address = address;
return this;
}
public Member build() {
return new Member(this); // 최종적으로 Member 객체 생성
}
}
// (선택) getter 추가
public String getName() { return name; }
public int getAge() { return age; }
public String getJob() { return job; }
public String getAddress() { return address; }
}
@Builder
@ToString
public class Student {
private Long seq;
private String name;
private Integer age;
private String address;
private String gender;
}