Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Refactoring
- 리펙토링
- 스위프트
- ios
- tableView
- Xcode
- uitableview
- HIG
- swiftUI
- SWIFT
- Clean Code
- swift documentation
- 리팩토링
- collectionview
- clean architecture
- ribs
- 클린 코드
- rxswift
- MVVM
- Protocol
- map
- combine
- UITextView
- Human interface guide
- RxCocoa
- UICollectionView
- 리펙터링
- 애니메이션
- Observable
- uiscrollview
Archives
- Today
- Total
김종권의 iOS 앱 개발 알아가기
[iOS - swift] clean architecture를 적용한 MVVM 개념 맛보기 본문
Architecture (swift)/MVVM (맛보기)
[iOS - swift] clean architecture를 적용한 MVVM 개념 맛보기
jake-kim 2021. 6. 18. 01:55MVVM 구조
- Presentation Layer: View + ViewModel
- ViewModel은 UI이벤트가 발생하면 '무엇'을 해야하는지 알고, UseCase를 요청 후 View에 업데이트 알림 역할
- Domain Layer: UseCase + Model
- 비즈니스 로직 계층
- 저장소에 관한 Interface가 포함
- 다른 프로젝트에서도 재사용 될 수 있도록, 다른 부분에 의존하지 않고 의존을 받는 상태
- (Repository): Domain과 Data의 인터페이스 역할 protocol
- Data Layer: DataStore + Entity
Presenter(ViewModel) vs UseCase
- ViewModel에 비즈니스 로직을 넣는 경우는 잘못된 접근
- 비즈니스 로직은 UseCase에 존재
- ViewModel의 역할은 UI이벤트들이 발생하면 '무엇'을 해야하는지 알고 있는 것
- '무엇'을해야 하는지 알고 있기 때문에 UseCase를 실행시키고 UI에 업데이트를 알리는 역할
- 비즈니스 로직은 앱에서 사용자와의 상호작용 아닌 업무 요구 사항을 담고 있는 것
- 비즈니스 로직: "개발팀 외부의 사업 부서 사람도 알고 있어야 하는 로직"
Model vs Entity
- Model은 Entity로부터 앱에서 사용하고자 하는 모델로 변경한것
- Entity는 codable과 같은 json에서 파싱되는 모델
- 만약 Model과 Entity차이가 별로 없다면 둘중 한 모델만 사용해도 무방
데이터 흐름
- View에서 이벤트가 발생 -> Presenter(ViewModel)에서 '무엇'인지 판단
- Presenter는 UseCase를 실행
- UseCase는 User와 Repository를 결합
- 각 Repository는 network, DB관련 Store에서 데이터 반한
- 다시 UI에 업데이트: Store -> Repository -> UseCase -> ViewModel -> View(UI)
* .drawio 파일:
* 참고
- MVVM template: https://github.com/kudoleh/iOS-Clean-Architecture-MVVM/tree/master/MVVM%20Templates
- 개념: https://tech.olx.com/clean-architecture-and-mvvm-on-ios-c9d167d9f5b3
'Architecture (swift) > MVVM (맛보기)' 카테고리의 다른 글
Comments