올해는 머신러닝이다.
MVVM / MVC(아키텍쳐)와 디자이패턴과 다른점은 무엇인가 본문
MVVM / MVC vs. 디자인 패턴 (팩토리 패턴 등)
MVVM(Model-View-ViewModel)과 MVC(Model-View-Controller)는 소프트웨어 아키텍처 패턴(Architectural Pattern) 이고, 팩토리 패턴(Factory Pattern) 같은 것은 디자인 패턴(Design Pattern) 입니다.
이 둘의 가장 큰 차이점은 다음과 같습니다.
1. 아키텍처 패턴 vs. 디자인 패턴
구분 아키텍처 패턴 (MVVM, MVC) 디자인 패턴 (팩토리 패턴 등)
목적 | 애플리케이션 전체의 구조를 정의 | 특정 문제를 해결하기 위한 재사용 가능한 코드 설계 |
규모 | 애플리케이션 전반에 적용 (전반적인 소프트웨어 아키텍처를 설계) | 특정 기능이나 로직을 효과적으로 구현하기 위해 적용 |
예시 | MVC, MVVM, MVP, Clean Architecture | 팩토리 패턴, 싱글톤 패턴, 전략 패턴, 옵저버 패턴 등 |
사용 위치 | 프로젝트 전체의 코드 구조를 구성하는데 사용 | 특정 기능을 구현할 때 코드 재사용성과 유지보수성을 높이기 위해 사용 |
즉, MVVM이나 MVC는 애플리케이션의 전체적인 아키텍처 설계 방식이며, 팩토리 패턴 같은 디자인 패턴은 특정 기능을 효율적으로 구현하기 위한 방법입니다.
2. MVVM & MVC (아키텍처 패턴)
🏛️ 1) MVC (Model-View-Controller)
MVC는 전통적인 UI 애플리케이션 아키텍처 패턴입니다.
- Model (모델): 데이터 및 비즈니스 로직 (DB, API 등)
- View (뷰): UI 화면 (사용자에게 보이는 부분)
- Controller (컨트롤러): Model과 View를 연결하고, 사용자의 입력을 처리
MVC 동작 흐름
- 사용자가 View(화면)에서 버튼을 클릭
- View는 이벤트를 Controller에게 전달
- Controller는 Model에서 데이터를 가져와 가공
- Model에서 데이터를 가공 후 Controller에 반환
- Controller는 가공된 데이터를 View에 전달하여 UI를 업데이트
➡️ 주로 웹 애플리케이션(예: Spring, ASP.NET MVC, Django 등) 에서 사용됨.
🏛️ 2) MVVM (Model-View-ViewModel)
MVVM은 주로 모바일 및 데스크톱 애플리케이션에서 사용되는 아키텍처 패턴입니다.
- Model (모델): 데이터 및 비즈니스 로직 (DB, API 등)
- View (뷰): UI 화면 (사용자에게 보이는 부분)
- ViewModel (뷰모델): View와 Model을 연결하는 중간 역할, UI 로직을 처리
MVVM 동작 흐름
- 사용자가 View(화면)에서 버튼 클릭
- View는 ViewModel과 양방향 바인딩 (Binding)
- ViewModel은 Model에서 데이터를 가져와 View에 자동 반영
- ViewModel이 데이터를 가공하면 View도 자동으로 변경됨 (데이터 바인딩)
➡️ 주로 모바일(Flutter, Android, iOS) 및 데스크톱(WPF, SwiftUI) 애플리케이션에서 사용됨.
💡 MVVM은 데이터 바인딩 기능이 있어서, View가 직접 Model을 호출할 필요 없이 자동으로 UI 업데이트가 이루어짐
💡 MVC보다 ViewModel을 활용하여 UI 로직을 분리할 수 있어서 코드 유지보수가 쉬움
3. 팩토리 패턴 등 디자인 패턴
디자인 패턴(Design Pattern) 은 특정한 코딩 문제를 해결하는 일반적인 방법입니다.
MVVM이나 MVC와는 달리, 전체 애플리케이션이 아니라 특정 기능을 어떻게 구현할지에 대한 패턴입니다.
🎯 예제: 팩토리 패턴 (Factory Pattern)
팩토리 패턴은 객체 생성을 캡슐화하는 디자인 패턴입니다.
// 팩토리 패턴 예제 (Java)
class Car {
String model;
Car(String model) {
this.model = model;
}
}
class CarFactory {
static Car createCar(String type) {
if (type.equals("Sedan")) {
return new Car("Sedan");
} else if (type.equals("SUV")) {
return new Car("SUV");
}
return null;
}
}
// 사용
Car myCar = CarFactory.createCar("SUV");
✔️ 팩토리 패턴은 객체 생성을 감추고 필요할 때만 객체를 생성하는 방식
✔️ 클라이언트 코드에서 new 키워드를 직접 쓰지 않고 팩토리 메서드를 호출하여 객체 생성 가능
4. 정리
구분 MVVM & MVC (아키텍처 패턴) 팩토리 패턴 등 (디자인 패턴)
목적 | 애플리케이션의 전체적인 구조 설계 | 특정 기능이나 문제 해결을 위한 패턴 |
규모 | 큰 규모 (애플리케이션 전체 구조) | 작은 규모 (특정 기능이나 클래스 설계) |
사용 위치 | 애플리케이션의 아키텍처 | 객체 생성, 로직 처리, 이벤트 관리 등 |
예시 | MVC, MVVM, MVP | 팩토리 패턴, 싱글톤 패턴, 옵저버 패턴 등 |
✅ 결론
- MVVM, MVC는 애플리케이션의 전체적인 설계를 위한 아키텍처 패턴
- 팩토리 패턴 같은 디자인 패턴은 특정 기능을 효율적으로 구현하기 위한 코드 패턴
- MVVM이나 MVC 내부에서 팩토리 패턴, 싱글톤 패턴 같은 디자인 패턴을 활용할 수 있음.
'스터디' 카테고리의 다른 글
지치지 않고 제대로 공부하는 7가지 방법 (0) | 2018.12.18 |
---|