MVVM(Model-View-ViewModel)은 iOS 개발에서 자주 사용되는 아키텍처 패턴으로, 관심사의 분리를 통해 유지보수성과 테스트 용이성을 높입니다.
MVVM은 아래 세 가지 구성 요소로 나뉩니다.
| 구성요소 | 역할 |
|---|---|
| Model | 앱의 비즈니스 로직 및 데이터 계층 |
| View | 사용자 인터페이스(UI), 사용자 입력 처리 |
| ViewModel | Model과 View 사이의 중개자, UI 로직을 담당 |
struct User {
let name: String
let age: Int
}
class UserViewController: UIViewController {
var viewModel: UserViewModel!
override func viewDidLoad() {
super.viewDidLoad()
viewModel.fetchUser()
}
}
Observable, @Published, Closure, RxSwift, Combine 등을 활용해 View에 데이터 바인딩class UserViewModel {
var userName: ((String) -> Void)?
func fetchUser() {
let user = User(name: "John", age: 25)
userName?(user.name)
}
}
MVVM은 중대형 iOS 프로젝트에서 코드 구조를 정돈하고 유지보수성을 높이기 위한 효과적인 아키텍처입니다.
Swift에서는 Combine, RxSwift, Closure 등 다양한 방법으로 ViewModel과 View 간의 데이터 바인딩을 구현할 수 있습니다.