IOS application/Swift

4. Design Patton: MVVM 패턴

개발자킹콩 2021. 2. 6. 16:11

Design Patton: MVVM

목차

1. 개발의 Design Patton? 

2. MVC 패턴: Model - View - Controller (디자인 패턴의 근본)

3. MVVM 패턴

 

 


 

 

 

1. 개발의 Design Patton?

 

Patton은 보통 어떤 일이나 목적을 효율적으로 달성하기 위한 체계

이전의 개발은 개발의 패턴이 없어 유지보수와 관리가 힘들었다.

그래서 특정 패턴을 만들어 유지보수와 관리가 쉽게 하였다.

그것이 우리가 알고있는 MVC, MVVM 같은 패턴이다.

 

디자인 패턴의 목표

  1. 기술부채의 최소화
  2. 재사용 및 지속 가능

 

위에는 추상적이고, 구체적인 코드 구조에 대한 전략을 짜는 것이 목표겠지.

 

  1. 클린 아키텍처
  2. 디자인 패턴

 

이에 대한 고민에 대한 답을 찾아보자!!

 

 


 

 

2. MVC 패턴: Model - View - Controller (디자인 패턴의 근본)

 

 

 

 

Model: 데이터 —> struct

View: 화면에 보여지는 UI요소 —> UIView

Controller: Model과 View를 중계하는 것 —> UIViewController

 

Controller은 Model과 View의 값이나 형태를 업데이트한다.

Model과 View는 값의 변경이나 유저의 행동을 Controller에게 보고한다.

 

 

 

 

 

 

이렇게 되면 중계자인 ViewController에서 해야할 일이 너무 많아질 수 있다.

결과적으로 기술부채가 발견되는 경우도 존재한다. 이 기술부채의 핵심은 ViewController에서 발생한다.

그래서 MVC 패턴을 Massive View Controller이라도 놀리기도 한다.

 

 


 

 

3. MVVM 패턴

 

 

그래서 등장한 현재 앱개발에서 가장많이 사용되는 패턴 MVVM

MVVM: Model - View - ViewModel

 

 

 

 

Model: 앱 내에서 사용하는 데이터

View: 화면에 보여지는 UI요소, 여기에 UIViewController을 추가함

ViewModel: Model의 내용을 View에서 사용할 수 있게 전환 시켜주는 역할을 한다.

이것은 ViewModel이란 클래스를 만들어서 이 역할을 수행하게 된다.

 

 

 

 

 

 

MVC vs. MVVM

  1. ViewController가 Model에 직접 접근하지 못한다.
  2. ViewController가 View Layer에 존재한다.

 

MVVM을 통해 개선하려 했던 점은 너무 오지라퍼 였던 ViewController 역할을 줄이려 한 것. 그래서 할 일은 축소되고 더욱 명확해 졌다.

Class의 경우 할 일이 명확 할수록 수정에 용이하고 유지보수와 관리가 쉬워진다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'IOS application > Swift' 카테고리의 다른 글

6. Instance Method vs. Type Method  (0) 2021.04.22
5. AVMetadataItem  (0) 2021.02.18
3. 상속은 언제 하면 좋은가?  (0) 2021.01.22
2. Struct vs. Class  (0) 2021.01.22
1. Swift Method vs. Computed Property  (0) 2021.01.22