
MVC 패턴이란?

MVC 패턴은 Model - View - Controller 의 약어로,
Model(모델), View(뷰), Controller(컨트롤러)로 구성된 디자인 패턴이다.
애플리케이션 구성요소를 모델, 뷰 컨트롤러 세가지 역할로 구분하여
각각의 구성요소에만 집중해서 개발 할 수 있다.
MVC 패턴의 장단점
+ 기능별로 코드를 분리하기 때문에 가독성과 재사용성이 높다.
+ m,v,c 로 역할을 구분하기 때문에 협업 시 분업이 가능하다.
- 복잡해질수록 모델 - 뷰의 의존성이 강해진다.
MODEL - 모델
- 애플리케이션 데이터인 DB, 상수, 변수를 의미한다.
- 사용자가 편집하길 원하는 모든 정보를 가지고 있어야 한다.
- 상태의 변화가 있을 때 컨트롤러에게 데이터를 전달하며, 뷰에 직접적으로 접근할 수 없어야 한다.
- 모델은 뷰와 컨트롤러에 의존하지 않아야 한다.
VIEW - 뷰
- 뷰는 inputbox, checkbox, textarea 등 사용자 인터페이스 요소 (UI) 이다.
즉, 사용자에게 보이는 화면을 말한다. - 모델이 가지고 있는 정보를 저장하지 않아야 한다.
- 변경이 일어나면 컨트롤러에게 전달한다.
- 모델과 컨트롤러와의 종속성 없이 구현 되어야 한다.
CONTROLLER - 컨트롤러
- MVC 패턴의 핵심으로, 하나 이상의 모델과 하나 이상의 뷰를 잇는 다리 역할이다.
- 사용자가 뷰에서 데이터 입력/조회를 요청하면 모델로 가는 것이 아니라 컨트롤러를 거치게 되는데,
사용자가 입력한 데이터를 처리/응답하거나 이벤트들을 처리한 후 모델과 뷰에게 전달한다.
컨트롤러는 특정 뷰를 지정해야 하기 때문에 뷰와 종속관계가 발생한다.
따라서 프로그램이 복잡해질 수록 컨트롤러의 부피도 커지기 때문에 복잡하고 유지보수가 어려워진다.
'CS공부' 카테고리의 다른 글
RESTful API 란? (0) | 2023.07.05 |
---|---|
절차지향 언어 VS 객체지향 언어 (0) | 2023.07.03 |
[JAVA] Enum(열거형) 개념과 예제 (0) | 2023.06.27 |
[JAVA] 싱글톤 패턴 (Singleton Pattern) 개념과 예제 (0) | 2023.06.26 |
[JAVA] 큐(Queue) 클래스 및 메서드 총정리 (0) | 2023.06.23 |

MVC 패턴이란?

MVC 패턴은 Model - View - Controller 의 약어로,
Model(모델), View(뷰), Controller(컨트롤러)로 구성된 디자인 패턴이다.
애플리케이션 구성요소를 모델, 뷰 컨트롤러 세가지 역할로 구분하여
각각의 구성요소에만 집중해서 개발 할 수 있다.
MVC 패턴의 장단점
+ 기능별로 코드를 분리하기 때문에 가독성과 재사용성이 높다.
+ m,v,c 로 역할을 구분하기 때문에 협업 시 분업이 가능하다.
- 복잡해질수록 모델 - 뷰의 의존성이 강해진다.
MODEL - 모델
- 애플리케이션 데이터인 DB, 상수, 변수를 의미한다.
- 사용자가 편집하길 원하는 모든 정보를 가지고 있어야 한다.
- 상태의 변화가 있을 때 컨트롤러에게 데이터를 전달하며, 뷰에 직접적으로 접근할 수 없어야 한다.
- 모델은 뷰와 컨트롤러에 의존하지 않아야 한다.
VIEW - 뷰
- 뷰는 inputbox, checkbox, textarea 등 사용자 인터페이스 요소 (UI) 이다.
즉, 사용자에게 보이는 화면을 말한다. - 모델이 가지고 있는 정보를 저장하지 않아야 한다.
- 변경이 일어나면 컨트롤러에게 전달한다.
- 모델과 컨트롤러와의 종속성 없이 구현 되어야 한다.
CONTROLLER - 컨트롤러
- MVC 패턴의 핵심으로, 하나 이상의 모델과 하나 이상의 뷰를 잇는 다리 역할이다.
- 사용자가 뷰에서 데이터 입력/조회를 요청하면 모델로 가는 것이 아니라 컨트롤러를 거치게 되는데,
사용자가 입력한 데이터를 처리/응답하거나 이벤트들을 처리한 후 모델과 뷰에게 전달한다.
컨트롤러는 특정 뷰를 지정해야 하기 때문에 뷰와 종속관계가 발생한다.
따라서 프로그램이 복잡해질 수록 컨트롤러의 부피도 커지기 때문에 복잡하고 유지보수가 어려워진다.
'CS공부' 카테고리의 다른 글
RESTful API 란? (0) | 2023.07.05 |
---|---|
절차지향 언어 VS 객체지향 언어 (0) | 2023.07.03 |
[JAVA] Enum(열거형) 개념과 예제 (0) | 2023.06.27 |
[JAVA] 싱글톤 패턴 (Singleton Pattern) 개념과 예제 (0) | 2023.06.26 |
[JAVA] 큐(Queue) 클래스 및 메서드 총정리 (0) | 2023.06.23 |