iOS/iOS Swift 개발 일기

아키텍쳐 MVC, MVVM

Developer-Michelle 2023. 2. 18. 10:06

아키텍쳐 MVC, MVVM

 

MVC

Model View Controller의 약자

 

모델 - 데이터를 보유.

코딩 가능한 파일, 네트워크 파일, 상수파일, 핵심 데이터모델, 기타 데이터 소스 등 포함.

데이터를 모델링하는 가장 좋은 방법 - struct 사용

(class를 사용하는 경우 상속 같은 무거운 개념 필요하니깐. 그리고 model 의 경우 값만 저장하면 되니깐 struct를 사용)

struct = 값 유형 . 클래스와 달리 구조체를 복사할 때, 두 인스턴스에 대해 고유한 복사본을 유지.

 

뷰 

사용자로부터 입력을 받는 상호작용 레이어

시각적 작업 수행

비즈니스 논리 필요 X

기본 레이블, 버튼, 이미지, 애니메이션, 그래픽 등과 같은 요소 포함

 

컨트롤러

모델에서 모든 데이터를 가져와 비즈니스 로직 수행, UI 요소에 전달

 

 

MVC의 단점

프로젝트 크기가 커질 때, 뷰 컨트롤러가 많은 코드로 인해 복잡해짐

 


MVVM (Model / View / View-Model)

모델 - 데이터를 보유

뷰 - 사용자에게 데이터를 보여주고, 사용자로부터 데이터를 가져오는 UI 요소

뷰모델 - 모델과 뷰 사이의 중재 계층.

뷰와 모델 사이에서 데이터 관리

 

장점

-관리 : 컨트롤러에서 복잡한 코드 제거

-테스트 용이성: 코드를 별도의 모듈로 나누기 때문에 테스트 용이

-재사용성: 모델과 뷰를 재사용 가능. 분리되어있으니깐

 

 

 

참고)

https://medium.com/technology-nineleaps/mvvm-architecture-for-ios-6d78794e13d8