두두의 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 클래스가 만들어지기 때문에 영향이 크진 않지만 성능적으로도 불리할 수 있음
-
생성자 빌더 클래스 역할 생성 시점에 값을 실음 생성자와 동일 특징 코드 실행 전까지 값을 실을 필드를
명확히 지정하는 것이 불가코드 실행 전에 값을 실을 필드를
명확히 인지 가능