모델-뷰-컨트롤러 패턴

(MVC 패턴에서 넘어옴)

1 개요[ | ]

Model–View–Controller (MVC)
모델-뷰-컨트롤러, MVC 패턴
  • UI와 로직이 분리되어 한쪽 모듈 수정시 서로 영향 적음.[1]
  • 소프트웨어 아키텍처[2]
  • 이제는 고전이 된(?) 전형적인 애플리케이션 OOP 구조
  • 소위 소프트웨어 프레임워크라고 하는 것들이 대부분 이 구조이다.
  • 별도의 프레임워크를 사용하지 않더라도 이 구조로 설계된 소프트웨어들이 많다.
  • 기능확장, 코드 유지보수가 용이하다.
  • 유저 인터페이스와 비지니스 로직을 분리할 수 있다.
  • DRY 유지, 코드 관리가 편리하다.
  • MVC 패턴에는 옵저버 패턴, 전략 패턴, 컴포지트 패턴가 복합적으로 적용되어 있다.
디자인 패턴 설명
옵저버 패턴 모델이 변경되는 경우, 뷰에 반영된다. (단 웹 애플리케이션의 경우 사용자의 요청시에만 화면이 갱신된다면 옵저버 패턴은 없을 수도 있다.)
전략 패턴 뷰는 받은 입력의 처리를 특정 컨트롤러를 선택·위임한다.
컴포지트 패턴 뷰는 자체적으로 계층적인 UI 요소들로 구성된다.

2 구성[ | ]

요소 설명
모델
  • "데이터 처리는 여기서..."
  • 데이터 구조 표현
  • 기능과 데이터 제공
  • 비즈니스 로직(+DAO) 담당 ★
  • 데이터를 추출, 입력, 갱신하는 함수 포함
  • "사용자에게 보이는 것들은 여기에..."
  • 모델의 상태 출력
  • 사용자에게 응답
  • 사용자에게 보이는 부분
  • 웹페이지 또는 그 일부, RSS 등의 출력
컨트롤러
  • "뭔가 이벤트가 발생해서 일을 해야 한다면 여기서 컨트롤..."
  • 사용자 입력[3] 처리
  • 모델이나 뷰를 변경
  • 모델과 뷰 사이에서 동작하며 비즈니스 로직 처리
  • 핵심적인 흐름

 

 

 

3 웹애플리케이션 MVC ★[ | ]

  • 웹 애플리케이션에서 MVC의 일반적인 형태

 

4 변형판[ | ]

5 같이 보기[ | ]

6 참고[ | ]

  1. 화면구성(UI)은 View가, 로직은 Controller가 담당하도록 함
  2. MVC는 디자인 패턴 중 하나로 볼 수도 있지만, 가장 큰 틀이 되므로 소프트웨어 아키텍처라고 하는 것이 적절하다.
  3. 물론 사용자 입력을 직접 받는 곳은 View이다. 컨트롤러는 해당 이벤트의 실질적인 처리를 담당함
문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}