안드로이드

MVC 패턴이란? (with Android)

pengcon 2025. 3. 3. 21:03

MVC의 의미란?

MVC 는 Model, View, Controller의 약자이다. 하나의 애플리케이션, 프로젝트를 구성할 때 그 구성요소를 세가지의 역할로 구분한 패턴이다.

왜 MVC가 탄생하게 되었을까 ?

과거의 프로그래머들은 코드가 많아질수록 복잡해져서 

코드 파악도 힘들어지고, 수정 할 때마다 많은 코드를

갈아엎어야 했다 -> 유지보수가 힘들었다.

그러다가 프로그래머들이 코드를 짜면서 특정 패턴대로 코드를 짜면

유지보수가 편한것을 찾아내고, 그 패턴을 하나의 공식처럼 만든것이다.

 

요약하자면 MVC는 유지보수가 편해지는 코드 구성 방식이다.

 

MVC 패턴 예시

 

사용자가 구글에 검색어를 입력하면,

Controller를 통해 Model에 검색 결과를 달라고 요청한다.

검색 결과를 받은 Controller는 View에게 데이터를 View로 전달하고,

사용자는 View를 통해 검색 결과 데이터를 볼 수 있는 것이다.

 

따라서 MVC를 각자 요약하자면 아래와 같다.

 

MVC를 위반하지 않으며 코딩하는 방법

1. Model은 Controller와 View에 의존하지 않아야 한다. 

-> Model 내부에 Controller와 View에 대한 코드가 있으면 안된다.(Import 하면 안된다)

 

2. View는 Model에만 의존하고, Controller에는 의존하면 안된다.

-> View 내부에 Model 코드만 있어야하고, Controller는 있으면 안된다.

 

3. View가 Model에게 데이터를 받을때는, 사용자마다 다르게 보여줘야하는 데이터만 받아야한다.

 

4. Controller는 Model과 View에 의존해도 된다.

 

5. View가 Model로부터 데이터를 받을 때, 반드시 Controller에서 받아야 한다.

 

MVC 위반 예시 

Model에서 View의 코드가 있으므로 좌측 코드는 위반이다.

오른쪽 코드는 Controller는 Model과 View에 의존해도 되므로 가능한 것이다.

 

Model로부터 View가 데이터를 받을 때는 사용자마다 다르게 보여주어야 하는데이터만 받아야한다.

ONE_STEP인 "-"는 모든 사용자에게 같이 보여줘야 하므로, 왼쪽 코드는 잘못되었다.

 

안드로이드에서의 MVC

안드로이드는 다음과 같이 MVC가 구별이 된다고 생각 될 수 있지만.

사실은 그렇지 않다. 

 

Activity는 안드로이드 시스템 구조의 한계 상 Controller라고 부르기에는 어렵고, View에 속하게 된다.

따라서 기본적으로 만들어진 프로젝트는 VM (View - Model) 패턴이라고 할 수 있다.

따라서 안드로이드는 MVC 패턴을 구현 할 수 없으므로, 발전된 MVP 패턴을 적용하고자 하였다.

MVP 패턴은 다른 글을 통해 소개하겠다.

 

 

 

https://www.youtube.com/watch?v=ogaXW6KPc8I

 

 

 

https://www.youtube.com/watch?v=OPXf00DX4b0&t