Spring을 가지고 프로젝트를 진행하는 과정에서 객체를 생성할 때 간편하게 Lombok을 활용해 @Builder를 사용했습니다. 하지만 @Builder가 어떻게 구성되어있는지 궁금했기에 학습을 통해 해당 어노테이션을 알아보았습니다.
빌더 패턴(Builder Pattern)은 객체의 생성 과정을 단순화하고, 가독성과 유연성을 향상시키는 디자인 패턴입니다. 복잡한 객체를 생성할 때 사용되며, 객체의 속성을 설정하는 빌더 클래스를 이용하여 객체를 생성합니다.
public class Person {
private String name;
private int age;
private String address;
private Person(Builder builder) {
this.name = builder.name;
this.age = builder.age;
this.address = builder.address;
}
public static class Builder {
private String name;
private int age;
private String address;
public Builder name(String name) {
this.name = name;
return this;
}
public Builder age(int age) {
this.age = age;
return this;
}
public Builder address(String address) {
this.address = address;
return this;
}
public Person build() {
return new Person(this);
}
}
}
// 사용 예시
Person person = new Person.Builder()
.name("giggle")
.age(25)
.address("apartment")
.build();
위와 같이 빌더 패턴을 사용하게 된다면 다음과 같은 이점을 가질 수 있습니다.
유연한 객체 생성: 빌더 패턴을 사용하면 객체 생성 과정을 단계별로 분리할 수 있습니다. 필요한 속성만 설정하고, 선택적으로 다른 속성을 설정할 수 있습니다.
가독성과 유지 보수성: 빌더 패턴을 사용하면 객체 생성 코드가 보다 가독성이 좋아집니다. 필요한 속성만 설정하는 구문으로 코드를 작성하고, 객체 생성과 관련된 코드가 한 곳에 집중되므로 유지 보수성이 향상됩니다.
불변 객체 생성: 빌더 패턴을 사용하면 불변(Immutable) 객체를 쉽게 생성할 수 있습니다. 불변 객체는 변경 불가능한 상태를 제공하여 안정성과 스레드 안전성을 보장합니다.
선택적 매개변수 처리: 빌더 패턴은 선택적인 매개변수를 가진 객체를 편리하게 생성할 수 있습니다. 필요한 속성만 설정하고, 나머지는 기본값을 사용하거나 생략할 수 있습니다.
@Builder 어노테이션을 클래스에 적용하면 해당 클래스에 대한 빌더 클래스를 자동으로 생성합니다. 이 빌더 클래스는 객체의 생성과 속성 설정을 담당하며, 메서드 체인을 통해 속성 값을 설정할 수 있습니다.
import lombok.Builder;
import lombok.Getter;
import lombok.Setter;
@Getter
@Setter
@Builder
public class Person {
private String name;
private int age;
private String address;
}
// 사용 예시
Person person = Person.builder()
.name("giggle")
.age(25)
.address("apartment")
.build();
@Builder 어노테이션을 사용하게 되면 자동으로 빌더 클래스를 생성해주기 때문에 편리하게 개발이 가능합니다. 하지만 위와 같은 어노테이션을 사용하는 것보다 먼저 어노테이션에 대한 내용을 온전하게 이해하는 것이 중요할 것 같습니다.
피드백 및 개선점은 댓글을 통해 알려주세요😊