본문 바로가기

Architecture

iOS ) MVC Pattern

안녕하세요.

 

오늘 패턴의 첫 번째 시간인 만큼

 

애플에서 권장하고 있는 패턴인 MVC 에 대해서 알아보는 시간을 가지겠습니다.

 

이미지 출처 - 애플공식 개발 문서

 

 

MVC 구성

M - Model 

뷰에 띄워지기 전에 저장하고 있는 데이터나 데이터의 형식 이며

가공되지 않은 순수한 데이터를 나타낸다.

 

V - View

유저 즉, 사용자에게 보여지는 요소(UI) 이다. 

Cocoa Framework 에서 지원하는 UIkit 으로 사용자의 인터페이스나, 제스쳐, 이벤트를 구성 가능하다.

 

C - Controller 

사실상 거의 모든 일을 하는 부분이다. View와 Model 사이에서 상호작용 하여 UI 화면 동작 처리나 Model의 데이터 업데이트 등

 

 

실제 구동 방식

View에서 사용자에게 정보를 보여주기를 원한다면 User Action 을 통해

 

1) View -> Controller 에게 요청

 

2) Controller -> Model 에게 정보를 요청 or 데이터 Update

 

3) Model -> Controller 에게 반환

 

순수한 데이터 결과값을 입맛대로 가공한 Data를 기반하여

 

4) Controller -> View Update 한다.

 

특징

Controller의 중간 다리 역할 덕분에 위의 그림과 같이 Model 과 View는 서로를 알지 못한다. (독립성)

 

Controller가 View의 생명주기에도 영향을 주기 때문에 재사용성에 있어서 적합하지 못하다. 

 

TDD (Test-Driven Developmen) 관점에서 보았을때 독립적으로 테스트 하기에 적합하지 못하다는 이야기다.

 

전적으로 Controller가 대부분의 일을 하고 있기 때문에 아무리 데이터 처리를 Model에게 위임한다고 하더라도

 

앱의 규모가 커짐에 따라 Controller의 역할이 방대해지는 것은 불가피 하다.

 

또한 유지보수 측면에서도 효율적이지 못하다.

 

오죽하면 우스갯 소리로 개발자들이 MVC 를 Massive View Controller 라는 말도 나오니 말이다. 😂

 

결론

위에 구동 방식은 언뜻(?) 보면 굉장히 간편하고 간결한 구조인것은 확실하다.

 

따라서 경험이 적은 개발자들이 입문하여 개발하거나

 

작은 규모의 기획 등에 자주 쓰이고 효과 적인 Design Pattern 이다.