Closed plzprayme closed 3 years ago
객체에 메세지를 보내는 방식으로 작업을 해봤습니다.
두 가지 방식이 떠올라서 둘 다 작업을 해봤는데요. 홍빈님은 의견이 어떤지 여쭤보고 싶습니다~
Dto 에서 dto builder를 호출하기
public static class ReadMemoRes { // Dto 에서
public static ReadMemoRes toDto(Memo memo) {
return ReadMemoRes.builder()
.memoId(memo.getId())
.memoContent(memo.fetchContent())
.createdAt(memo.getCreatedAt())
.thumbnailUrl(memo.getThumbnailUrl())
.folderId(memo.getFolderId())
.folderTitle(memo.getFolderTitle())
.folderColor(memo.getFolderColor())
.favorite(memo.getFavorite())
.secret(memo.isSecret())
.build();
}
}
ReadMemoRes.toDto()
에서 Memo
가 가지고 있는 정보들을 불러옵니다.
Entity 에서 dto builder를 호출하기
public class Memo { // Entity 에서
public MemoDto.ReadMemoRes toReadMemoRes() {
return MemoDto.ReadMemoRes.builder()
.memoId(id)
.memoContent(fetchContent())
.createdAt(getCreatedAt())
.thumbnailUrl(thumbnailUrl)
.favorite(favorite)
.folderId(folder.getId())
.folderTitle(folder.getTitle())
.folderColor(folder.getColor())
.secret(folder.isSecret())
.build();
}
}
1번 방식은 Entity에 public 메서드들이 많이 생기는 반면에 (memo.getFolderId(), memo.getFolderTitle() ....)
2번 방식은 public 메서드 하나에 priavte 메서드 하나만 생깁니다.
음.. 2번 방식은 Memo
에서 ReadMemoRes
를 생성하고 있으니 좋지 않은 방식일까요?
저도 비슷한적이 있었는데요. 전엔 1번을 기준으로 했었습니다. '변경이 많이일어나는곳(DTO)에서 적게일어나는 곳(모델)으로 의존하자' 라는 생각으로 했었습니다. 더 책임을 나누는분들은 assembler라는 클래스를 둬서 변환하는 클래스를 따로 두더라고요
위에 말씀하신대로 1번으로 변경했습니다~
assembler 는 공부를 해봐야겠네요.
isSecret()
메서드는 왜 저렇게 작성을 했었을까요..
부끄럽습니다 ㅋㅋ
105
변경 사항
기타