(클린 아키텍처-MVVM) Domain 계층의 Repository 패턴

해당 프로젝트를 보고 스스로 공부한 내용이니 틀린 정보가 있을수 있습니다.

 

Domain 계층은 클린 아키텍처에서 가장 안쪽에 있는 계층입니다. 다른 계층과는 완전히 격리되어 있습니다. Entity, Usecase, Reposiotry 인터페이스가 Domain 계층에 해당됩니다. Domain 계층을 완전히 분리를 한것을 확인하려면 해당 계층을 의존하는 Presentation 계층이나 Data 계층이 바뀌어도 Domain 계층을 재사용 할 수 있어야 합니다. 따라서 다른 계층의 코드가 포함이 되어선 안됩니다.

 

Repository

Repository는 DB 혹은 서버에서 데이터를 가져오는 작업을 추상화 시키는 것을 의미합니다. iOS는 protocol을 이용하여 추상화를 진행합니다. 여기서 주의해야 할 점은 Repository 프로토콜(추상화)이 Domain 계층에 포함이 되고, Repository 프로토콜을 구현한 객체는 Domain 계층이 아닌 Data 계층에 포함되어있습니다. Repository 프로토콜을 채택을 하여 Data 계층에서 이를 구현 및 의존성 주입과, Usecase에서는 의존성 역전 법칙에 의해 해당 프로토콜의 기능을 이용하는 식으로 구현 할 수 있습니다.