티스토리 뷰
MVVM Design Pattern
MVVM 디자인 패턴
Model-View-ViewModel 의 구성을 가진 디자인 패턴, MVVM은 앞서 Model, View, ViewModel 세개의 특정 그룹으로 객체들을 나누는 디자인패턴입니다. MVC(Model-View-Controller) 패턴에 비하면 Controller -> ViewModel이 되었네요.
MVVM의 구성 그룹, 세가지 그룹은 모델(Model), 뷰(View), 뷰모델(ViewModel)로 각각의 역할은 아래와 같습니다.
- 모델(Model) : 앱 데이터를 갖습니다. 보통 구조체나 단순한 클래스로 구성되어 있습니다.
- 뷰(View) : 스크린 상에 시각적으로 보이는 요소와 컨트롤들을 표출합니다. 전형적으로 UIView의 서브클래스 들로 구성이 됩니다.
- 뷰모델(ViewModel) : 모델 정보를 뷰 상에 표출될 수 있는 값으로 변환시킵니다. 보통 이들은 클래스로 구성되어 있으며 그렇기에 그들은 주변에 참조되어 질 수 있습니다.
혹시 위의 Model-View-ViewModel 역할 소개를 듣고 무언가 친숙함이 있으셨나요?
사실 해당 모델은 Apple에서 기본적으로 채택해 사용하는 패턴, MVC패턴과 매우 유사합니다. 주목할 것은, 이러한 MVVM 패턴에서도 MVC패턴때와 같이 ViewController가 사용되어집니다. 다만, MVC에 비해 MVVM 디자인패턴 에서의 뷰컨트롤러(ViewController)의 역할은 축소 되어 있습니다.
* Cocoa에서 사용되는 기본 디자인 패턴, MVC에 대한 상식
MVC 패턴은 Apple에서 기본적으로 지원되는 디자인패턴으로 다른 패턴에 비해 비교적 쉽게 구현할 수 있는 장점이 있지만 Massive ViewController의 단점 또한 갖고 있습니다.
Apple 공식 문서에서는 MVC 디자인 패턴에 대해서 위와 같이 언급하고 있습니다.
MVC는 Cocoa 어플리케이션의 좋은 설계의 중심에 있습니다. MVC패턴을 적용하면 얻는 장점은 매우 많습니다. 해당 어플리케이션의 많은 객체들은 재사용 가능하도록 하는 경향이있습니다. 또한 그들의 인터페이스또한 더 잘 정의되려는 경향이 있습니다. MVC 설계 하의 어플리케이션은 타 어플리케이션에 비해 매우 확장성이 높습니다.. 무엇보다도, 많은 Cocoa 기술들, 설계들은 MVC에 기반을 하고 있고, 당신의 커스텀 객체들이 MVC 규칙 하에서 작동되길 요구합니다.
다음 포스팅에서는 MVVM패턴에 대해서 이해하기 위해 뷰 모델(ViewModel)을 프로젝트 내에 구성하고, 적용하는 방법을 배워보도록 합니다.
이후에는 뷰모델이 포함된 MVVM 디자인패턴을 구성하면서 뷰모델이 어떤 역할을 하는지에 대해 알아보기에 앞서 먼저 MVC 디자인 패턴을 구현한 뒤, MVC 패턴을 MVVM 패턴으로 리펙토링(Refactoring) 해보는 간단한 예제를 다뤄보도록 하겠습니다.
MVVM 디자인패턴 관련 참고 링크 ▼
Design Patterns by Tutorials: MVVM
Learn how and when to use the architecture-slash-design pattern of MVVM in this free chapter from our new book, Design Patterns by Tutorials!
www.raywenderlich.com
'iOS 개발' 카테고리의 다른 글
iOS swift 디자인패턴, MVVM패턴 코드 구성하기 (0) | 2020.06.26 |
---|---|
iOS 디자인패턴, MVC대신 MVVM 패턴을 사용하는 이유 (2) | 2020.06.25 |
iOS leastNonzeroMagnitude, leastNormalMagnitude 알아보기 (0) | 2020.06.11 |
swift 문자열 처리 메서드, split과 components 간단 비교 (0) | 2020.06.09 |
Vision VNRequest, Handler, Observation 역할 및 사용방법 (0) | 2020.06.03 |
- Total
- Today
- Yesterday
- ios
- swift문제
- 김프매매
- CoreML
- Swift 알고리즘
- Protocol
- 백준swift
- 알고리즘
- 스위프트
- 프로그래머스swift
- swift언어
- 프로그래머스
- 프로토콜
- 백준알고리즘
- createML
- 부스트코스
- 컬렉션
- publisher
- swift reduce
- uikit
- swift 기초
- 알고리즘문제
- Collection
- swift알고리즘
- swift string
- swift 문자열
- 자연어처리
- SwiftUI
- swift
- 개발자문서
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |