728x90
책 '면접을 위한 CS 전공지식 노트'를 읽고 정리한 내용입니다.
MVC 패턴
- MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인 패턴이다.
- 애플리케이션의 구성 요소를 세 가지 역할로 구분하여 개발 프로세스에서 각각의 구성 요소에만 집중해서 개발할 수 있다.
- 사용자의 입력은 Controller로 들어간다.
- 웹 개발에서는 Controller가 웹 요청을 처리하고, Model에서 데이터를 가져와 필요한 처리를 수행한 후, View에 결과를 전달해서 웹 페이지를 렌더링 한다.
- View - Controller 관계는 OnetToMany이며 간혹 ManyToMany 방식이 된다. 그래서 Controller는 원하는 View를 선택 가능하지만 View Controller를 선택할 수 없다.
- View와 Model은 서로간의 연관성이 없다.
MVC 패턴 동작순서
- 사용자의 동작(Action)이 Controller로 들어옴
- Controller는 Action을 확인하고 데이터를 처리하는 부분인 Model을 업데이트
- Controller는 UI를 나타내는 View를 선택
- View는 Model을 이용해 화면을 나타낸다.
장점
- 재사용성과 확장성
- 각각의 역할을 분리하여 개발하므로, 각각의 역할을 수정하거나 대체하는 것이 용이하다.
- 코드의 재사용성
- 각각의 역할이 분리되어 있으므로, 다른 프로젝트에서도 해당 역할을 활용하여 개발할 수 있다.
- 높은 개발 효율성
- 역할이 분리되어 있으므로, 여러 명이 동시에 개발하기 편하다.
단점
- 애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해진다.
모델(Model)
- 데이터와 비즈니스 로직을 처리하는 부분
- 데이터를 저장하고 가져오는 역할을 한다.
- 뷰에서 데이터를 생성하거나 수정하면 컨트롤러를 통해 모델을 생성하거나 갱신한다.
뷰(View)
- 뷰는 사용자 인터페이스(UI) 요소를 말한다. 즉, 사용자가 볼 수 있는 화면을 뜻한다.
- 모델의 데이터를 이용해서 사용자에게 보여준다.
- 변경이 일어나면 컨트롤러에 변경 사항을 전달해야 한다.
컨트롤러(Controller)
- 모델과 뷰를 연결하는 부분
- 사용자의 요청을 처리하고, 모델의 데이터를 뷰에 전달한다.
Spring에서의 MVC
- Spring은 MVC 아키텍처 패턴을 따르고 있는 대표적인 프레임 워크이다.
- Spring Web MVC는 웹 서비스를 구축하는 데 편리한 기능들을 많이 제공한다.
- Spring MVC 흐름
- Spring에서는 DispatcherServlet이 클라이언트로부터 요청을 받아서 요청을 처리할 Controller를 찾는다.
- Controller가 비즈니스 로직을 수행하고 그 결과를 Model 객체에 담아 DispatcherServlet에 전달
- DispatcherServlet은 ViewResolever를 이용하여 View를 찾아 Model 객체를 전달
- View는 전달받은 Model 객체를 이용하여 화면을 출력한다.
MVP 패턴
- 사용자의 입력은 View를 통해 입력된다.
- View-Presenter 관계는 OneToOne이다.
- View는 Presenter를 참조하고, Presenter는 View를 참조한다. (서로 강하게 결합한다.)
- Presenter는 Model의 데이터를 수정하고, 데이터를 가졍는 것이 가능하다.
- View-Presenter가 일대일 관계로 인해 View마다 각각의 Presenteer가 존재하게 되기 때문에 코드의 수가 증가한다.
MVVM 패턴
- MVC의 컨트롤러가 뷰모델(View Model)로 바뀐 패턴
- 뷰모델은 뷰를 더 추상화한 계층이며, MVVM 패턴은 MVC 패턴과 다르게 커맨드와 데이터 바인딩을 가지는 것이 특징이다.
- 뷰와 뷰모델 사이에 양방향 데이터 바인딩을 지원하고 UI를 별도 코드 수정 없이 재사용할 수 있다.
- 단위 테스트하기 쉽다.
커맨드
- 여러 가지 요소에 대한 처리를 하나의 액션으로 처리할 수 있게하는 기법
데이터 바인딩
- 화면에 보이는 데이터와 웹 브라우저의 메모리 데이터를 일치시키는 기법으로, 뷰모델을 변경하면 뷰가 변경된다.
정리
MVC 패턴은 Model-View-Controller를 분리하여 개발하는 방식이다. 이 패턴은 기능과 뷰를 독립적으로 유지할 수 있고, 여러 뷰에서 같은 모델을 사용할 수 있고, 뷰는 모델에 영향을 주지 않는다. MVC패턴은 간단한 애플리케이션에서 사용하기 적합하다.
MVP 패턴은 MVC의 변형 패턴으로, 뷰와 모델을 분리하고 프리젠터를 통해 뷰와 모델을 연결한다. MVP 패턴은 테스트하기 쉽고 유지보수하기 쉽다. 복잡한 애플리케이션에서 사용하기 적합하다.
MVVM 패턴은 뷰 모델을 추가해서 데이터 바인딩을 사용하는 패턴이다. 뷰 모델은 뷰와 모델 사이에서 중개자 역할을 하며, 데이터와 뷰를 동기화하여 작업을 쉽게 만든다. 이 패턴은 UI 코드를 쉽게 작성할 수 있고, 확장성이 좋아 대규모 애플리케이션에서 사용하기 적합하다.
728x90
'책' 카테고리의 다른 글
면접을 위한 CS 전공지식 노트 - 이터레이터 패턴 (0) | 2023.05.02 |
---|---|
면접을 위한 CS 전공지식 노트 - 프록시 패턴과 프록시 서버 (0) | 2023.05.02 |
면접을 위한 CS 전공지식 노트 - 팩토리 패턴 (0) | 2023.04.21 |
면접을 위한 CS 전공지식 노트 - 싱글톤 패턴 (0) | 2023.04.21 |
면접을 위한 CS 전공지식 노트 - 시간 복잡도 (0) | 2023.04.18 |