본문 바로가기

IOS Swift

MVC와 MVVM의 차이점 및 장단점

MVC란?

Model View Controller의 약자로, 코드를 구성할 때 각각의 역할에 따라 코딩하는 디자인 패턴입니다.

 

  • Model 
    • 응용 프로그램에 특정한 데이터를 캡슐화하고 해당 데이터를 조작하고 처리하는 논리와 계산을 정의
  • View
    • 콘텐츠를 보여주는 화면
  • Controller
    • 뷰 객체와 하나 이상의 모델 객체 사이에서 중개자 역할
    • 사용자의 이벤트에 따라 모델 객체 또는 뷰를 변화시킴

 

MVVM이란?

Model View ViewModel의 약자로, 코드를 구성할 때 각각의 역할에 따라 코딩하는 디자인 패턴입니다. 

  • Model
    • 응용 프로그램에 특정한 데이터를 캡슐화하고 해당 데이터를 조작하고 처리하는 논리와 계산을 정의
  • View
    • 사용자에게 콘텐츠를 보여주는 화면
  • ViewModel
    • 뷰모델은 모델의 데이터를 뷰에서 필요한 형태로 가공 후 컨트롤러에게 제공
    • 컨트롤러에서 모델객체를 초기화해서 사용하던 것을 뷰모델로 분리 

 

MVC VS MVVM

가장 큰 차이점은 컨트롤러의 역활을 나눈 것에 있습니다. 앱이 커질수록 컨트롤러의 코드가 길어지기 때문에 줄이기 위해 역활을 나누었습니다. 

  • MVC의 Controller 
    • 사용자의 이벤트에 따라 모델 객체를 변화시킴
    • 사용자의 이벤트에 따라 뷰를 변화시킴
  • MVVM의 Controller
    • 사용자의 이벤트에 따라 뷰를 변화시킴

 

MVC 장단점

장점 : 비교적 간단한 패턴으로 구조파악과 확장을 쉽게 할 수 있습니다.

단점 : 뷰와 모델의 완벽한 분리가 어렵고 앱이 커지면 컨트롤러의 코드량이  커져 유지보수 하기가 힘듭니다.

 

MVVM 장단점

장점 : MVVM 패턴은 View와 Model 사이의 의존성이 없습니다. -> 테스트 용이 

단점 : 설계가 어렵고, 간단한 처리를 해주어야 할 때에는 데이터바인딩의 추가적인 코딩이 필요해 코드량이 늘어날 수 있습니다.

 

참고 : https://developer.apple.com/library/archive/documentation/General/Conceptual/DevPedia-CocoaCore/MVC.html#//apple_ref/doc/uid/TP40008195-CH32-SW3

 

Model-View-Controller

Retired Document Important: This document may not represent best practices for current development. Links to downloads and other resources may no longer be valid. Model-View-Controller The Model-View-Controller (MVC) design pattern assigns objects in an ap

developer.apple.com

 

반응형

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

앱이 In - active 상태가 되는 시나리오 - Swift  (0) 2021.09.23
SceneDelegate 란?  (2) 2021.09.16
Optional 이란?  (2) 2021.09.02
Hashable Swift 4.1 전 과 후  (2) 2021.08.29
[자료구조] HashTable 이란?  (0) 2021.08.29