반응형
MVC 패턴
MVC 패턴 정의
MVC는 Model, View, Controller로 구성된 아키텍처 패턴으로, UI와 비즈니스 로직을 분리하여 유지보수성과 재사용성을 높이기 위한 구조입니다.
MVC 패턴 구성요소
- Model: 애플리케이션의 데이터와 비즈니스 로직을 관리합니다. 예를 들어, 데이터베이스와 연동되거나 도메인 객체를 처리합니다.
- View: 사용자에게 보이는 UI 요소로, Model의 데이터를 시각적으로 표현합니다.
- Controller: 사용자의 입력을 받아 이를 처리하고, Model과 View 사이의 중재자 역할을 합니다.
MVC 패턴 흐름
- 사용자가 View에서 이벤트 발생 (예: 버튼 클릭)
- 해당 이벤트가 Controller로 전달
- Controller가 적절한 Model을 호출해 데이터를 갱신하거나 가져옴
- 변경된 Model이 View에 반영됨 (Observer 패턴 활용 가능)
MVC 패턴 장점
- 관심사 분리가 잘 되어 있어 유지보수가 용이합니다.
- 각 구성요소가 독립적으로 테스트될 수 있습니다.
- View를 바꾸더라도 Model에는 영향이 없어 재사용성이 높습니다.
MVC 패턴 단점
- 모든 기능이 분리되다 보니 초기 설계와 구현이 복잡할 수 있습니다.
- Controller가 Model과 View를 모두 알아야 하므로 결합도가 높아질 수 있습니다.
MVC 패턴 사용 예시
- Spring MVC, Django, ASP.NET MVC, Ruby on Rails 등 대부분의 웹 프레임워크가 채택하고 있습니다.
MVC 패턴 면접 대비 포인트
- MVC에서 View가 Model을 직접 참조할 수 있는가? → 예, View가 Model을 감시(Observer 패턴)하여 직접 데이터 변경을 감지할 수 있습니다.
- Controller는 어떤 역할인가? → View의 입력을 받아 Model을 갱신하거나 View를 갱신하도록 지시하는 중간 관리자입니다.
MVP 패턴
MVP 패턴 정의
MVP는 MVC에서 발전한 구조로, 특히 View와 비즈니스 로직을 명확하게 분리하고 테스트가 용이하도록 구성된 패턴입니다.
MVP 패턴 구성요소
- Model: 데이터 및 비즈니스 로직을 담당합니다.
- View: UI를 담당하며, 입력을 Presenter에 전달합니다.
- Presenter: View의 이벤트를 처리하고 Model과 상호작용한 후 결과를 View에 전달합니다.
MVP 패턴 흐름
- 사용자가 View에서 액션을 수행
- View가 해당 이벤트를 Presenter에 전달
- Presenter가 Model과 통신하여 데이터를 처리
- 결과를 다시 View에 넘겨 UI를 갱신합니다
MVP 패턴 장점
- UI 로직과 비즈니스 로직의 완전한 분리
- Presenter를 Mocking하여 단위 테스트가 쉬움
- View는 단순히 UI만 처리하므로 역할이 명확
MVP 패턴 단점
- View와 Presenter 사이에 인터페이스가 필요하여 보일러플레이트 코드가 증가
- Presenter가 로직과 View 갱신을 전부 담당하여 비대해지기 쉬움
MVP 패턴 사용 예시
- 안드로이드 앱 개발에서 Activity나 Fragment를 View로, 별도의 클래스를 Presenter로 구성
- GWT, WinForms에서도 사용 가능
MVP 패턴 면접 대비 포인트
- Presenter는 View를 참조하나요? → 예, 일반적으로 interface 형태로 View를 참조하여 갱신합니다.
- MVC와 MVP의 가장 큰 차이점은? → MVP는 View가 Model을 직접 참조하지 않고, 모든 흐름이 Presenter를 통해 이루어진다는 점
MVVM 패턴
MVVM 패턴 정의
MVVM은 ViewModel을 통해 View와 Model 사이의 UI 상태 및 이벤트 흐름을 자동화하는 패턴입니다. Data Binding을 통해 상태 변경을 자동 반영하는 것이 핵심입니다.
MVVM 패턴 구성요소
- Model: 비즈니스 로직 및 데이터
- View: UI와 레이아웃 담당, 직접 로직을 처리하지 않음
- ViewModel: Model의 데이터를 UI에 맞게 가공하고, 상태를 저장 및 관리
MVVM 패턴 흐름
- 사용자가 View를 통해 입력
- 해당 입력이 ViewModel로 전달됨 (Two-way Binding)
- ViewModel이 Model과 통신하여 데이터 요청/처리
- ViewModel 상태가 변경되면 View가 자동으로 갱신됨
MVVM 패턴 장점
- 데이터 바인딩을 통해 View 갱신이 자동으로 이루어짐
- ViewModel은 로직을 분리해두므로 단위 테스트가 용이
- View와 Model이 완전히 분리되어 구조가 깔끔함
MVVM 패턴 단점
- Data Binding이 복잡하며, 초기 학습 곡선이 있음
- 바인딩 로직이 많아지면 디버깅이 어려움
- ViewModel이 과도하게 로직을 가지면 비대해질 위험
MVVM 패턴 사용 예시
- 안드로이드 Jetpack (LiveData, StateFlow, ViewModel, Compose)
- WPF, Xamarin, SwiftUI 등 선언형 UI 프레임워크에서 주로 사용
MVVM 패턴 면접 대비 포인트
- ViewModel은 View를 직접 참조하나요? → 아니요, View와 ViewModel은 직접 참조하지 않고 Data Binding 또는 Observer를 통해 간접적으로 연결됩니다.
- MVVM과 MVP의 가장 큰 차이점은? → MVP는 수동으로 View를 갱신해야 하지만, MVVM은 상태 변경 시 자동으로 View가 갱신됩니다 (Binding).
반응형
'CS 공부일지 > 디자인패턴 공부일지' 카테고리의 다른 글
Flux 패턴의 개념과 특징 (0) | 2025.04.02 |
---|---|
프록시 패턴(Proxy Pattern)의 개념과 특징 (0) | 2025.04.01 |
옵저버 패턴(Observer Pattern)의 개념과 특징 (0) | 2025.03.31 |
전략 패턴 (Strategy Pattern)의 개념과 특징 (0) | 2025.03.31 |
이터레이터 패턴(Iterator Pattern)의 개념과 특징 (0) | 2025.03.31 |