[ios_Swift] MVC Architecture Pattern

이시영·2023년 8월 28일

아키텍쳐란 영단어로는 ‘건축학’ 이라는 뜻으로, 개발에서 아키텍쳐는 서비스의 동작 원리를 나타내는 것이다.

즉 서비스의 구성과 작동원리가 어떻게 디자인되어있는지를 나타내는 것인데 서비스가 어떻한 패턴으로 디자인되어 있는지는 서비스의 유지 및 관리에 있어서 굉장히 중요한 부분이며 대표적인 아키텍쳐 패턴으로 MVC, MVP, MVVM 이 있다.

MVC Pattern

MVC 패턴은 Model-View-Controller의 약자로서 앱을 Model, View, Controller 라는 세 가지 역할로 구분한 구조 패턴입니다.
MVC 패턴은 사용자가 Controller를 조작하면 Controller는 Model을 통해 데이터를 가져오고 그 데이터를 바탕으로 View를 통해 시각적 표현을 제어하여 사용자에게 전달하게 됩니다.

이는 Model 과 View 를 구별하고, 이 둘 사이를 중재하는 Controller 를 둠으로 서비스를 구조적으로 유연하며 재사용성이 높은 구조를 만듭니다. model, view, controller 가 각자의 역할에만 충실할 수 있도록 구조를 나누었기 때문에 코드의 유지및 관리의 효율을 높입니다.

Model
Model은 View에 표시되기 위해 필요한 데이터를 담으며 이와 관련된 일들을 처리힙니다. Model은 비즈니스 로직을 설명하는 클래스의 집합으로 구성되며 어떻게 데이터가 변경되고 조작될 수 있는지에 관한 규칙을 정의합니다.

View
View는 Controller로 부터 받은 UI 데이터를 표시하는 역할을 담당합니다. MVC 패턴에서 View는 데이터의 상태 변화를 업데이트 하기 위해 옵저버 패턴을 이용하여 Model을 관찰합니다.

Controller
Controller는 사용자의 요청을 처리하는 역할을 담당합니다. Controller는 Model을 통해 받은 데이터를 처리하거나, 결과 값을 View에 반환하는 역할을 합니다. 일반적으로 View와 Model사이를 중재하는 역할을 수행합니다.


MVC 패턴은 쉽게 설명하기 위해 아래의 그림처럼도 표현이 됩니다.


UIViewController는 사실 구조적으로 Controller와 View 가 완전히 분리되어있지 않은데 UIViewController는 이미 내부적으로 UIView를 가지고 있는 구조이다.

때문에 그림처럼 Controller는 UIViewController를 이며 View는 UIView에 대입되며 패턴이 첫 번째 이미지와 같은 모습을 가지게 된다.

1개의 댓글

comment-user-thumbnail
2023년 8월 29일

코드로 구현해보시면 더 와닿지 않을까 싶어요 !! 👍🏻

답글 달기