객체를 생성할 때 사용되는 방법 중 가장 흔한 방법은 Setter 메서드와 Builder 패턴이다.
객체의 속성을 외부에서 설정하는 방식
public class Person {
private String name;
private int age;
public Person() {
// 기본 생성자
}
// Setter 메서드 - @Setter로 단축해서 사용도 가능
public void setName(String name) {
this.name = name;
}
public void setAge(int age) {
this.age = age;
}
public static void main(String[] args) {
// Setter 메서드를 사용하여 객체 생성
Person person = new Person();
person.setName("John");
person.setAge(30);
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
}
}
Builder 패턴은 객체를 생성할 때 한번에 필요한 속성을 설정할 수 있는 방식이다.
import lombok.Builder;
import lombok.Getter;
@Getter
public class Person {
private final String name;
private final int age;
@Builder
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public static void main(String[] args) {
// @Builder를 사용하여 객체 생성
Person person = Person.builder()
.name("John")
.age(30)
.build();
System.out.println("Name: " + person.getName());
System.out.println("Age: " + person.getAge());
}
}
@Builder
public Person(String name, int age) {
// 이름이 null이거나 빈 문자열인 경우 예외 처리
if (name == null || name.isEmpty()) {
throw new IllegalArgumentException("이름은 null이거나 빈 문자열이 될 수 없습니다!");
}
객체의 불변성과 안정성을 고려할 때, Setter 메서드 대신 Builder 패턴을 사용하는 것이 좋다. 이를 통해 객체의 내부 상태를 예측 가능하고 안정적으로 유지할 수 있으며, 코드의 가독성과 유지보수성을 향상시킬 수 있기 때문이다.