TIL)23.08.17(Builder Pattern)

주민·2023년 8월 17일
0

TIL

목록 보기
62/84

기존에 사용했던 new Post(PostRequestDto postRequestDto) 대신 사용할 수 있는 방법으로 기존 코드에 영향을 주지 않고 불필요한 코드의 양을 줄여주기 때문에 권장하는 방법이다.

빌더 패턴

생성 패턴은 인스턴스를 만드는 절차를 추상화하는 패턴으로 빌더 패턴은 이 중 하나이다.

장점 => 참고 블로그
1. 필요한 데이터만 설정할 수 있음
2. 유연성을 확보할 수 있음
3. 가독성을 높일 수 있음
4. 변경 가능성을 최소화할 수 있음

  • PostRequestDto
    -> PostRequestDto를 Entity로 전환
@Builder
public class PostRequestDto {

private String title;
private String content;

public Post toEntity(){
    return Post.builder()
            .title(this.title)
            .content(this.content)
            .build();
	}
}
  • 사용 예제(PostService)
public ResponseEntity<ApiResponse> createPost(PostRequestDto postRequestDto) {
        Post post = postRequestDto.toEntity();
        postRepository.save(post);
}
  • PostResponseDto
    -> Post를 PostResponseDto로 전환
@Builder
public class PostResponseDto {

private Long id;
private String title;
private String content;

public static PostResponseDto of(Post post){
    return PostResponseDto.builder()
            .id(post.getId())
            .title(post.getTitle())
            .content(post.getContent())
            .build();
	}
}
  • 사용 예제(PostService)
#1
public ResponseEntity<PostResponseDto> getPostId(Long postId) {
    Post post = findPost(postId);
    return ResponseEntity.ok(PostResponseDto.of(post));
}

#2
public ResponseEntity<List<PostResponseDto>> getPosts() {
    return ResponseEntity.ok().body(postRepository.findAll().stream().map(PostResponseDto::of).toList());
}

0개의 댓글

관련 채용 정보