DTO는 데이터를 전달하기 위해 사용되는 객체인데 주로 계층 간(ViewModel과 ViewController) 데이터를 주고받을 때 사용된다.
목적
이점
예시
HangdamDTO
는 HangdamEntity
를 기반으로 생성되는데 Controller와 ViewModel 사이에서 데이터를 전달하는데 사용된다.struct HangdamDTO {
let id: String
var name: String?
var happinessCount: Int
var startDate: String?
var endDate: String?
}
Repository는 데이터 소스(데이터베이스, API)와 상호작용하는 역할을 담당한다.
목적
이점
예시
HangdamRepository
는 CoreData에서 HangdamEntity
를 가져와 DTO로 변환하고 반환한다.final class HangdamRepository {
private let coreDataManager: CoreDataManager
init(coreDataManager: CoreDataManager = CoreDataManager()) {
self.coreDataManager = coreDataManager
}
func getCurrentHangdam() -> HangdamDTO {
let entity = coreDataManager.fetchHangdams().last ?? createNewHangdam()
return entity.toDTO
}
private func createNewHangdam() -> HangdamEntity {
return coreDataManager.createHangdam()
}
}
DTO
Repository
DTO는 택배 상자다.
Repository는 택배 회사다.
DTO는 진자 멋진 녀석이었다.