Builder 패턴은 언제 사용하고 언제 사용하지 않는게 좋은 건가요
883
작성한 질문수 2
안녕하세요!!
강의 중 ApiResponse라는 제네릭 클래스를 만들 때에는 Builder를 사용하지 않으셨는데, 제네릭 클래스여서 사용하지 않은 건가요??
그리고 혹시 Builder패턴을 사용을 하지 않았으면 하는 부분들이 있을까요?
항상 친절하게 답해주셔서 감사합니다!!
답변 2
1
안녕하세요, ardimento22님! :)
클래스의 형질에 따라 Builder의 사용 유무를 나눈 것은 아니고요, 필요한 시점에만 만들어서 그렇습니다.
보통 자바에서 생성자로 인스턴스를 생성한다고 했을 때 아쉬운 점들을 보완하기 위해 Builder를 사용하게 되는데요.
크게는 어떤 파라미터를 넣는지 타입이나 순서가 아닌 각각의 이름으로 명시하여 인스턴스를 생성할 수 있다는 장점이 있습니다.
이런 이유로 저는 자바에서는 Builder를 적극적으로 사용하고 있어요.
참고로 코틀린에서는 생성자 자체에서 네임드 파라미터를 지원하기 때문에 Builder가 필요하지 않습니다.
감사합니다. :)
0
안녕하세요, 인프런 AI 인턴이에요.
ApiResponse 같은 제네릭 클래스를 만들 때 Builder 패턴을 사용하는 것은 일반적으로 권장되지 않습니다. 제네릭 클래스는 다양한 타입의 객체를 다루기 위해 유연성을 제공하는데, Builder 패턴은 객체 생성 과정을 단계적으로 처리하기 위한 패턴이기 때문입니다.
제네릭 클래스를 만들 때 Builder 패턴을 사용하지 않는 이유는, Builder 패턴을 사용하면 객체를 생성하는 과정에서 많은 코드를 작성해야 하기 때문입니다. 예를 들어, 필수적인 속성과 선택적인 속성이 있는 경우에도 해당 속성에 대한 메서드를 모두 구현해야 합니다. 그 결과 코드의 양이 증가하게 되고 가독성이 떨어질 수 있습니다.
또한, Builder 패턴은 객체 생성을 한 번에 처리하기 때문에 객체가 불변성을 유지할 수 있습니다. 하지만 제네릭 클래스는 타입에 따라 객체가 유동적으로 변할 수 있는데, 이런 경우에는 Builder 패턴을 사용할 필요가 없을 수 있습니다.
Builder 패턴은 객체 생성 과정이 복잡하고 유연성을 요구할 때 많은 도움을 주지만, 항상 필요한 것은 아닙니다. 필요한 상황에 맞게 선택적으로 사용하는 것이 좋습니다.
더 궁금한 사항이 있다면 언제든지 물어보세요. 좋은 하루 되세요!
private 상수 테스트 관련 질문
0
83
1
void는 어떻게 테스트하나요..? void로 애초에 코딩하면 안되나요??
0
126
2
커버리지는 어떻게 활용하시는지 궁금합니다.
0
161
2
테스트 문서화 질문입니다
0
105
2
단위테스트 질문이 있습니다
0
96
2
컨트롤러는 모킹을 한 이유가 궁금합니다.
0
103
2
ERD 가장자리에 있는 도메인 테스트 질문
0
89
2
DTO 검증 필드에 대한 테스트 코드 작성은 어디까지?
0
135
2
OrderCreateRequest DTO에 대해서 궁금한점
0
102
2
고전파의 테스트 대역 사용 대상, 공유 의존성
0
156
2
계층 관련 질문이 있습니다.
0
139
3
'코틀린'에서는 빌더를 따로 쓰지 않는데, 이 때는 어떻게 test fixture를 만드시는지 궁금합니다
1
124
2
혹시 update 로직은 어떻게 테스트하나요? (@Setter?)
0
135
2
단위테스트와 통합테스트의 경계가 궁금합니다.
0
229
2
Service+Repository 통합테스트 관련 질문입니다.
0
150
2
OrderControllerDocsTest 작성 해봤는데요. 날짜 형식이 이상하게 나와요
0
185
2
test 용 .yml
0
90
2
throws Exception
0
80
2
카페키오스크 클래스 문의 ,,
0
89
2
Rest docs 문서용 테스트코드를 따로 작성해야 되나요?
0
174
2
테스트 코드에서 필요한 생성자
0
138
1
tearDown 순서
0
116
2
@Builder 생성자 private
0
136
2
@DisplayName gradle / intellJ
0
93
2





