Builder

yuns·2022년 10월 17일
0

Spring

목록 보기
12/13
post-thumbnail

builder의 장점

  • 필드에 어떤 값을 넣을지 명확하게 지정 가능
  • 생성자 방식보다 가독성이 좋다
  • setter을 이용하는 방식보다 안전하다
  • setter 생성을 방지해 불변성을 보장한다 (객체를 변경할 수 없음)

Builder 만들기

  1. 클래스에 annotation 붙이기
@AllArgsConstructor
@Builder
  1. builder만들기
생성자 이름 from (매개변수) {
	return 생성자이름.builder()
    	.필드이름()
        .필드이름()
        .build();
}

ex)

// builder 사용했을 때
    public BoardListResponseDto from (Board board) {
        return BoardListResponseDto.builder()
                .title(board.getTitle())
                .createdAt(board.getCreatedAt())
                .modifiedAt(board.getModifiedAt())
                .username(board.getAccount().getUsername())
                .build();
    }

// 기존 생성자를 사용했을 때
    public BoardListResponseDto(Board board) {
        this.title = board.getTitle();
        this.createdAt = board.getModifiedAt();
        this.modifiedAt = board.getCreatedAt();
        this.username = board.getAccount().getUsername();
    }

boardService.java

// builder 사용 글 생성
    public BoardResponseDto createBoard(BoardRequestDto requestDto, Account account) {
        Board board = new Board(requestDto, account);
        boardRepository.save(board);
        return new BoardResponseDto().from(board);
    }

// 기본 생성자 사용 글 생성
    public BoardResponseDto createBoard(BoardRequestDto requestDto, Account account) {
        Board board = new Board(requestDto, account);
        boardRepository.save(board);
        return new BoardResponseDto(board);
    }

0개의 댓글