본문 바로가기

프로그래밍/디자인패턴

MVC (Model-View-Controller)

728x90
반응형

- Model View Controller 의 약자

- 프로그래밍을 할 때 Model, View, Controller로 구분하여 설계하는 방법을 말한다.

- View와 Controller는 내부 속성 값을 가져서는 안된다.

각각의 역할은 아래와 같다.

1. Model

- 데이터를 보유 또는 가공하는 역할을 한다.

(사용자가 편집하길 원하는 모든 데이터들을 가지고 있다)

- Controller로부터 데이터의 가공을 요청 받아 수행한다.

- 가공된 정보를 Controller에게 돌려준다.

- 가공된 정보를 View에게 전달할 수도 있다.

2. View

- UI등 무언가 화면에 보여주기 위한 역할을 한다.

- 화면에 보여주는 역할 외에는 그 무엇도 관여해서는 안된다.

- 간접적으로 Controller에 버튼이 눌렸음을 알리는 정도만

3. Controller

- Event에 대한 기능을 수행한다.

- 예를들어 화면에 보여지는 Button 같은 것들의 입력을 받아 알맞는 작업을 수행한다.

- Model에게 데이터의 가공을 요청하는 역할

위 역할에 따라 계산기로 간단히 플로우를 살펴보자면

1. Model

- 일반용, 공학용 등의 플래그들을 보유

- 일반용일 경우 일반용에 필요한 정보를 가공하여 리턴

- 공학용일 경우 공학용에 필요한 정보를 가공하여 리턴

- Model의 데이터가 변경되어 View에게 변경 요청을 보낼 수도 있다.

2. Controller

- 숫자, +, -, 보기, 편집 등의 이벤트를 받음

- 보기->일반용 플래그를 누르면 Model로부터 가공된 정보를 받아 View에 던져준다.

- 보기->공학용 플래그를 누르면 Model로부터 가공된 정보를 받아 View에 던져준다.

3. View

- 화면에 보이는 것들을 그린다.

- Controller가 Model로부터 일반용, 공학용 등 가공된 정보를 가져다가 던져주면 View에서는 그에 맞는 화면을 그려준다.

- View에서 Model에 직접 데이터를 가져올 수도 있다.

(Controller가 모든 것을 통제하는 것은 아니다.)

 

 

장점

- 각각 역할에 맞는 작업만 한다.

(View는 화면을 그리고, Controller는 통제하고, Model은 데이터를 가공한다.)

단점

- Model과 View의 의존성이 강하다.

(MVC에서 Model은 View를 그리기 위한 정보와 가공처리를 한다. 따라서 View를 그리기 위해 Model에 의존해야 한다는 것이다.

- 복잡도가 높아질수록 기능과 역할이 무거워질 수 있다.

- 많은 사람들이 MVC 패턴에 대해서 서로 다르게 정리하고 있다.

어떤 사람의 글에는 View가 Controller와 Model을 알고 있으며

어떤 사람의 글에는 View와 Model이 서로 모른다.

MVC의 의도와 단점을 보자. 무엇이 맞는지 장단점만 보아도 알 수 있다.

참고 출처

 

디자인패턴) MVC 패턴

MVC 패턴 (Model-View-Controller ) 의존성을 줄이는 코딩을 통해 재사용성을 높이고 수많은 요구사항 변경에 쉽게 대처하도록 만드는 패턴이다. 뷰와 컨트롤러의 부분만 수정을 하면 되기 때문이다. MVC 패턴은..

drehzr.tistory.com

 

[디자인패턴] MVC, MVP, MVVM 비교

웹 개발자로 일을 하면서 가장 먼저 접한 디자인패턴이 바로 MVC 패턴이었습니다. 그만큼 유명하고 많이 쓰이는 디자인패턴인 MVC 패턴과 MVC 패턴에서 파생되어져 나온 MVP 패턴과 MVVM 패턴을 이야기해 보도록..

beomy.tistory.com

 

MVC / MVP 패턴에 대하여.

시작하면서.. MVC는 Model View Controller의 역할로 application을 구분하여 코딩하는것을 말한다. ...

blog.naver.com

 

MVP 링크

 

MVP (Model-View-Presenter)

- Model View Presenter 의 약자 - 프로그래밍을 할 때 Model, View, Presenter로 구분하여 설계하는 방법이다. - MVC 모델의 단점을 보안하기 위하 고안된 패턴이다. ​ 각각의 역할은 아래와 같다. 1. Model -..

chipmunk-plump-plump.tistory.com

MVVM 링크

 

MVVM (Model-View-ViewModel)

- Model View ViewModel의 약자 - 프로그래밍을 할 때 Model, View, ViewModel로 구분하여 설계하는 방법이다. - 사용자 인터페이스의 이벤트 중심 프로그래밍을 간소화하기 위해 고안되었다. - Ken Cooper 및 Ted..

chipmunk-plump-plump.tistory.com

 

다람쥐와 포동포동이

 

RememberCook 9월 28일 정식 출시!

두번째 게임인 RememberCook이 출시되었습니다. 귀여운 캐릭터들이 나오는 간단한 게임이며 플레이어의 공간인지능력을 테스트하는 게임입니다. 아래 링크를 통해 다운 받으실 수 있으니 많은 관��

chipmunk-plump-plump.tistory.com

반응형

'프로그래밍 > 디자인패턴' 카테고리의 다른 글

MVVM (Model-View-ViewModel)  (0) 2020.04.09
MVP (Model-View-Presenter)  (0) 2020.04.09
Command (커맨드)  (0) 2020.04.09
Strategy (스트레티지)  (0) 2020.04.09
FSM (유한 상태 머신)  (0) 2020.04.08