소프트웨어를 개발할 때는 언제든 확장, 수정이 가능하도록 유연할 설계가 필요함. (비즈니스든 디자인이든 변화에 유연한 대처가 필요함)

그렇기 때문에 디자인 패턴뿐만 아니라 아키텍처 패턴도 잘 사용할 수 있어야 한다.

Clean Architecture + MVVM

Clean Architecture 그래프와 MVVM 프로젝트 구조

Clean Architecture 그래프와 MVVM 프로젝트 구조

왼쪽의 클린 아키텍처 그래프를 보면 애플리케이션에서 다른 **레이어(layer)**들을 갖는다.

클린 아키텍처에서 가장 중요한 규칙은 안쪽 layer에서 바깥쪽 layer로는 의존성을 갖지 않아야 한다는 것.

의존 관계는 바깥쪽 layer → 안쪽 layer 로만 존재할 수 있다.

모든 layer를 그룹화하면 Presentation, Domain, Data 이렇게 3가지로 나눌 수 있다.

Untitled

✅ Domain Layer(비즈니스 로직)

클린 아키텍처 그래프의 가장 안쪽 부분이다. 여기에는 Entitiy(비즈니스 모델), Use Case, Repository Interface 등이 포함된다. 이 계층은 다른 프로젝트에서도 재사용이 가능한데, 이는 종속성이 필요하지 않기 때문에 테스트 타겟 내에서 호스트 앱을 사용하지 않을 수 있기 때문이다(환경에 구애받지 x). 이 덕분에 Domain Use Case 테스트는 몇 초 밖에 걸리지 않는다.