MVC 패턴

2dubu·2022년 5월 10일
1

Design Pattern

목록 보기
1/1

iOS 앱 개발을 처음 시작할 때 보통 MVC 패턴을 접하실 것 같은데요. 실제로 iOS 앱의 객체 관계는 MVC 패턴에 기반하고 있다고 해요. MVC 패턴에 대해서 조금 더 깊이 알아봅시다!

MVC 패턴?

MVC 패턴이란 소스 코드 설계 기법으로써, 모델(Model) - 뷰(View) - 컨트롤러(Controller)로 이어지는 세 개의 핵심 구조를 이용하려 애플리케이션을 설계하는 것을 말합니다. 모델(Model)은 데이터를 담당하고, 뷰(View)는 데이터에 대한 화면 표현을 담당하며, 컨트롤러(Controller)는 모델과 뷰 사이에 위치하여 데이터를 가공하여 뷰로 전달하고, 뷰에서 발생하는 이벤트를 입력받아 처리하는 역할을 담당합니다.

iOS 앱 객체의 관계를 MVC 패턴에 맞게 배치한 후 상호 관계를 나타낸 그림입니다.

왜 사용할까?

하나의 큰 애플리케이션 파일 안에 모두 한꺼번에 담아 작성해도 되지만 이렇게 쪼개고 나누어 놓은 이유는 이 패턴이 가지는 장점 때문입니다. 바로 데이터와 비즈니스 로직을 시각적인 표현으로부터 분리해 줌으로써 화면을 신경 쓰지 않고도 데이터나 비즈니스 로직을 작성할 수 있다는 점입니다.

데이터를 관리하고, 데이터를 가공하여 원하는 기능을 구현하고, 화면에 표현하는 부분이 위와 같이 나누어져 있지 않고, 모두 하나로 모여 있다고 가정하겠습니다. 만약 아이폰과 아이패드, 혹은 애플 TV와 같이 앱이 출력되는 화면의 크기가 달라진다면 전체 프로그램을 새로 작성해야 합니다. 데이터나 비즈니스 로직을 관리하는 부분과 화면을 구성하는 부분의 프로그램 코드가 섞여있기 때문에 화면을 어떻게 구성할지에 대한 내용이 달라진다면 연관된 모든 소스코드를 수정해야 합니다.

하지만 화면이 달라진다고 해서 데이터를 관리하는 부분, 데이터를 가공하여 원하는 기능을 구현하는 부분에 대한 코드를 건들이는 것은 좋지 않은 방법이죠..
이런 관점에서 출발한 MVC 패턴은 프로그램을 특성에 따라 서로 영향을 미치지 않을 수 있는 범위로 분리해 놓았습니다. 이 패턴을 따르면 데이터 관리 부분을 수정해도 비즈니스 로직이나 화면 표현 코드에는 영향을 미치지 않게 되는거죠! 이에 따라 훨씬 더 프로그램이 유연해지는 결과를 얻을 수 있습니다.

MVC 패턴 적용 사례

그렇다면 MVC 패턴을 사용한 사례는 어떤 것이 있을까요?

java의 Spring, python의 Django 등이 있습니다!

MVC 패턴의 한계

세상에 완벽이라는 단어는 없듯이 MVC 패턴에도 한계가 존재합니다. 복잡한 대규모 프로그램의 경우 다수의 뷰와 모델이 컨트롤러를 통해 연결되기 때문에 컨트롤러가 불필요하게 커지는 현상이 발생합니다. 복잡한 화면을 구성하는 경우에도 동일한 현상이 발생하는데 이를 'Massive-View-Controller' 라고 합니다.

이러한 단점을 보완하기 위해 다양한 패턴이 파생되었습니다. 예를 들어 MVP, MVVM, Redux 패턴 등이 있습니다! 이 부분에 대해서는 다음에 알아보도록 하겠습니다.

마무리

MVC 패턴은 사용자 인터페이스가 필요한 어플리케이션에서 가장 즐겨 사용되는 디자인 패턴입니다. MVC 패턴을 사용해본 경험이 있어 어느 정도는 설명이 가능하지만, 구체적으로 정리해보지 않아서 블로그에 남기게 되었습니다. 여러 디자인 패턴에 대해 공부하고, 이를 적용하고 싶은 마음은 크지만 쉽지 않네요..

해당 글은 '꼼꼼한 재은 씨의 Swift 기본편'을 참고했습니다!

수정해야 할 부분이 있다면 알려주세요!
읽어 주셔서 감사합니다. 🙂

profile
iOS Developer 👶🏻

0개의 댓글