"모델-뷰-컨트롤러 패턴"의 두 판 사이의 차이

 
(같은 사용자의 중간 판 4개는 보이지 않습니다)
10번째 줄: 10번째 줄:
* 유저 인터페이스와 비지니스 로직을 분리할 수 있다.
* 유저 인터페이스와 비지니스 로직을 분리할 수 있다.
* DRY 유지, 코드 관리가 편리하다.
* DRY 유지, 코드 관리가 편리하다.
* 전통적으로는 [[옵저버 패턴]], [[전략 패턴]], [[컴포지트 패턴]]의 결합체이다.
* MVC 패턴에는 [[옵저버 패턴]], [[전략 패턴]], [[컴포지트 패턴]]가 복합적으로 적용되어 있다.


{| class='wikitable'
{| class='wikitable'
! [[디자인 패턴]] !! 설명
! [[디자인 패턴]] !! 설명
|-
|-
| [[옵저버 패턴]] || 모델이 변경되는 경우, 뷰에 반영된다. (단, 웹 애플리케이션의 경우 사용자의 요청시에 화면이 갱신되므로 옵저버 패턴이 빠질 수 있다.)
| [[옵저버 패턴]] || 모델이 변경되는 경우, 뷰에 반영된다. (단 웹 애플리케이션의 경우 사용자의 요청시에만 화면이 갱신된다면 옵저버 패턴은 없을 수도 있다.)
|-
|-
| [[전략 패턴]] || 뷰는 받은 입력의 처리를 특정 컨트롤러를 선택·위임한다.
| [[전략 패턴]] || 뷰는 받은 입력의 처리를 특정 컨트롤러를 선택·위임한다.
|-
|-
| [[컴포지트 패턴]] || 뷰는 계측적인 UI 요소들로 구성된다.
| [[컴포지트 패턴]] || 뷰는 자체적으로 계층적인 UI 요소들로 구성된다.
|}
|}


31번째 줄: 31번째 줄:
* 데이터 구조 표현
* 데이터 구조 표현
* 기능과 데이터 제공
* 기능과 데이터 제공
* [[비즈니스 로직]](+[[DAO]]) 담당
* [[비즈니스 로직]](+[[DAO]]) 담당
* 데이터를 추출, 입력, 갱신하는 함수 포함
* 데이터를 추출, 입력, 갱신하는 함수 포함
|-
|-
68번째 줄: 68번째 줄:


==같이 보기==
==같이 보기==
{{z컬럼3|
* [[전략 패턴]]
* [[전략 패턴]]
* [[옵저버 패턴]]
* [[옵저버 패턴]]
* [[JSP]]
* [[아키텍처 패턴]]
* [[JSP 모델 1, 모델 2 아키텍처]]
* [[JSP 모델 1, 모델 2 아키텍처]]
* [[PHP MVC]]
* [[PHP MVC]]
78번째 줄: 79번째 줄:
* [[안드로이드 MVC]]
* [[안드로이드 MVC]]
* [[MVC 게시판 만들기 일반절차]]
* [[MVC 게시판 만들기 일반절차]]
}}


==참고==
==참고==

2022년 7월 11일 (월) 17:38 기준 최신판

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 }}