본문 바로가기
iOS📱/Common

[디자인패턴] MVC, MVP, MVVM

by 텅빈비니 2025. 2. 5.
반응형

안녕하세요🐶

빈지식 채우기의 비니🙋🏻‍♂️ 입니다.

 

바로 오늘의 주제에 대해 아래 대화로 알아보도록 하죠!

 

👨🏻‍💼 : 안녕하세요 여러분~ 우리가 유지보수와 개발 효율 상승을 위해서는 무엇을 할 수 있을까요?

🙋🏻‍♂️ : 선생님 안녕하세요! 흠.. 재사용 가능한 코드블럭이라고 생각합니다!

👨🏻‍💼 : 호호 그 말도 맞지만 보편적으로 사용하는 것은 디자인 패턴이라는 것입니다! 오늘은 이것에 대해 알아보도록 할게요!

🙋🏻‍♂️ : 넵 선생님!

 

(ㅋㅋㅋㅋㅋ) 위에 대화 처럼 오늘은 디자인 패턴에 대해 알아보도록 할겁니다!

그 중에서 가장 보편적인 MVC, MVP, MVVM 에 대해!


1. MVC

Model + View + Controller 를 합친 용어

1-1. 구조

MVC ( Model - View - Controller )

  • Model : 어플리케이션에서 사용되는 데이터를 정의하는 부분.
  • View : 사용자에게 보여지는 UI.
  • Controller : 사용자의 입력(Action)을 받고 처리하는 부분.

1-2. 동작 원리

  1. 사용자의 입력(Action)은 Controller를 통해서 들어오게 됩니다.
  2. Controller는 사용자의 입력(Action)을 확인하고, Model 데이터를 변경합니다.
  3. Controller는 Model 데이터를 처리할 View를 선택합니다.
  4. View는 Model을 이용하여 화면을 업데이트를 합니다.

1-3. 특징

  • Controller는 여러개의 View를 선택할 수 있는 1:N 구조입니다.
  • Controller는 View를 선택만 하고 직접 업데이트를 하지 않습니다.
💡여기서 잠깐💡
🙋🏻‍♂️ : 선생님 근데 iOS에서의 ViewController는 뭔가요..?
👨🏻‍💼 : 아주 좋은 질문이에요. iOS 개발의 UI 개발에서는 View와 Controller가 합쳐진 ViewController 라는 기본 클래스를 상속받고 있습니다. 고로 iOS에서는 View와 Controller는 1:1 구조랍니다.
🙋🏻‍♂️ : 감사합니다 선생님!

1-4. 장점

  • 가장 널리 사용되고 있는 디자인 패턴
  • 단순하다 보니 보편적으로 많이 사용되고 있다.

1-5. 단점

  • 사용자에게 UI를 보여주는 View과 데이터 정의 및 처리하는 부분인 Model 사이의 의존성이 높다.
  • 어플리케이션이 커질 수록 복잡해지고 유지보수가 힘들어진다.

2. MVP

Model + View + Presenter 를 합친 용어

2-1. 구조

MVP ( Model - View - Presenter )

  • Model : 어플리케이션에서 사용되는 데이터를 정의하는 부분.
  • View : 사용자에게 보여지는 UI.
  • Presenter : View에서 요청한 정보로 Model을 가용하여 View에게 전달해주는 부분. View와 Model 사이에 오작교(?) 역할

2-2. 동작 원리

  1. 사용자 입력(Action)은 View를 통해 들어옵니다.
  2. View는 데이터를 Presenter에게 요청합니다.
  3. Presenter는 Model에게 데이터를 요청합니다.
  4. Model은 Presenter에게 데이터를 응답합니다.
  5. Presenter는 View에게 데이터를 응답합니다,
  6. View는 Presenter가 응답한 데이터를 이용하여 화면을 업데이트를 합니다.

2-3. 특징

  • Presenter는 View와 Model의 인스턴스를 가지고 있어 둘을 연결하는 역할을 합니다.
  • Presenter와 View는 1:1 관계입니다.

2-4. 장점

  • VIew와 Model의 의존성을 해결하였습니다. ( Presenter를 통해서만 데이터를 주고 받을 수 있다 )

2-5. 단점

  • View와 Model의 의존성은 해결되었지만 다리 역할을 하는 Presenter에 대한 의존성이 높아졌습니다.
  • View와 Presenter의 의존성이 강해지는 단점이 있습니다.

3. MVVM

Model + View + ViewModel 를 합친 용어

3-1. 구조

MVVM ( Model - View - View Model )

  • Model : 어플리케이션에서 사용되는 데이터를 정의하는 부분.
  • View : 사용자에게 보여지는 UI.
  • View Model : View를 나타내기 위해 Model에서 가져온 데이터를 가공하여 데이터 처리하는 부분.

3-2. 동작 원리

  1. 사용자의 입력(Action)이 View를 통해 들어옵니다.
  2. View에 입력(Action)이 들어오면, 미리 정의된 Command 패턴으로 View Model에 입력(Action)을 전달합니다.
  3. View Model은 Model에게 데이터를 요청합니다.
  4. Model은 View Model에게 요청받은 데이터를 응답합니다.
  5. View Model은 Model을 통해 응답 받은 데이터를 가공하여 저장합니다.
  6. View는 View Model과 Data Binding을 통해 화면을 업데이트 합니다.
💡여기서 잠깐💡
🙋🏻‍♂️ : 선생님 Command 패턴과 Data Binding은 무엇인가요?
👨🏻‍💼 : Command 패턴과 Data Binding은 따로 포스팅을 했으니 위의 하이퍼링크를 통해 글을 읽고 오도록 합시다 ㅎㅎ
🙋🏻‍♂️ : 넵! 선생님!

 


3-3. 특징

  • Command 패턴과 Data Binding 두 개의 패턴을 사용하여 구현되었습니다.
  • View와 View Model 간의 의존성을 해결했습니다.
  • View Model과 View는 1:N 관계입니다.

3-4. 장점

  • View와 Model 사이의 의존성이 없다.
  • View와 View Model 사이의 의존성이 없다.
  • 각각의 부분은 독립적이므로 모듈화하여 개발할 수 있다.

3-5. 단점

  • 러닝커브가 다른 디자인패턴에 비해 높다.
  • View Model의 설계가 쉽지 않다.

감사합니다.


참고

반응형