본문 바로가기
Swift

SwiftUI + Combine MVVM 아키텍쳐 분석 - 5

by songmoro 2024. 11. 11.
728x90

Business Logic - Service

  • protocol 기반
  • RealService와 StubService로 나뉨
    • 실사용과 테스트 코드용
  • init시 appState와 repository를 받음
    • appState를 service와 연결하지만 쓰이지 않는 경우도 있음(이전에 사용하다가 바뀌는 과정에서 제거가 누락된 듯)
    • container를 설정할 때 init(DIContainer.Services)
  • LodableSubject를 포함해 작업에 필요한 매개변수를 받고, repository를 통해 작업
    • 작업의 결과를 LodableSubject에 매핑
    • 작업 중에는 isLoading으로 상태 변환해 ui에서 로딩 중임을 보여줌
  • 코어 데이터를 사용해서 데이터를 저장해 두고 불러옴
    • 만약 코어 데이터에 데이터가 없다면 코어 데이터에 저장
    • 만약 코어 데이터에 데이터가 있다면 코어 데이터에서 로드
      • 데이터는 변화가 없다고 가정하고, 한 번 저장한 데이터는 무결하다가 전제인 듯
  • 데이터를 불러오거나 저장하는 로직만 있고, 작업이 어떤 방식으로 이루어지는지는 다루지 않음
    • 작업 방법은 repository가 정함
728x90