두두의 IT/Spring

Builder와 Getter/Setter

두두연 2023. 4. 18. 07:39
728x90

1. 점층적 생성자 패턴 : 생성자로 필드를 세팅, ex) new UserInfo(userId, password);

2. 자바빈 패턴 : Setter 메서드로 필드를 세팅, ex) userInfo.set(userId);

3. 빌더 패턴 : @Builder

  • Builder Class
  • 객체 생성에서 주입하는 것에 대한 방식
  • 코드에서 파라미터에 대한 정확성과 오류를 찾기 쉽게하는 어노테이션

 

@Builder를 사용하는 이유

  • 코드의 가독성이 높아진다.
  • 더욱 유연한 코드 작성에 용이하다.
    • getter/setter를 무작정 생성하는 경우, 해당 클래스의 인스턴스 값들이 언제 어디서 변경되는지 코드상으로 명확하게 구분할 수 없어 차후 기능 변경 시 불편하다.
  • 유동적으로 필요한 데이터만 필드에 설정할 수 있음
  • 객체를 생성한 후, 변경불가능 상태로 만들 수 있음
    • 인자로 잘못된 값을 전달하는 생성자의 문제점 해결
  • 단, 객체를 생성한 후 수정해야하는 경우에 빌더 패턴을 적용해버리면 결국 setter도 함께 사용하게 되는 단점이 있음
  • Builder 클래스가 만들어지기 때문에 영향이 크진 않지만 성능적으로도 불리할 수 있음
  •  
      생성자 빌더 클래스
    역할 생성 시점에 값을 실음 생성자와 동일
    특징 코드 실행 전까지 값을 실을 필드를
    명확히 지정하는 것이 불가
    코드 실행 전에 값을 실을 필드를
    명확히 인지 가능