Product product = Product.create(requestDto.getTitle(), requestDto.getContent(), requestDto.getPrice());
Product product = Product.create(requestDto);
객체를 생성할 때 DTO를 직접 전달하는 방식과 각 파라미터를 개별적으로 전달하는 방식에서 많은 고민이 있었다
이는 정답이 없는 문제로 결론부터 말하면 팀별 회의를 통해 정하는 것이 맞다 이다.
각각의 장단점을 정리하고 넘어가자
우리팀은 의존성을 줄이는것이 중요하다 생각해서 개별 파라미터를 전달하여 생성하기로 했다. 새로운 필드가 추가될 때마다 메소드 변경은 조금 번거로울 뿐이지만 치명적인 이슈를 만들진 않기 때문!
정적 팩토리 메소드를 도입하기 앞서 빌더 패턴과 정적 팩토리 메소드 두가지의 객체 생성을 위한 방식의 차이점과 장단점을 비교해보았다
빌더 패턴
@Builder
public Product(String title, String content, String imageUrl) {
this.title = title;
this.content = content;
this.imageUrl = imageUrl;
}
차이점
장점
단점
정적 팩토리 메소드
// 빌더를 이용하여
public static Product create(String title, String content) {
return Product.builder()
.title(title)
.content(content)
.imageUrl(imageUrl)
.build();
}
차이점
장점
단점
아직 팀원들 내부적으로 정적 팩토리 메소드의 당위성을 찾는 중이다 아마 static을 사용하는 것에 대한 깊은 고민과 이해를 동반해야 할 것인데 각자 고민해보고 내일 정할 것이다.