MVVM 패턴
소프트웨어 디자인 패던, UI 개발에 사용. 뷰(View)와 모델(Model) 사이의 강한 결합을 줄이기 위해 도입
- Model : 애플리케이션의 데이터와 비즈니스 로직을 관리
- View : 사용자 인터페이스 요소
- ViewModel : View와 Model 사이에서 데이터를 중계하고, 데이터 바인딩을 통해 View에 데이터를 전달
MVC와 MVVM의 차이점
- 사용자 입력 처리:
- MVC: 사용자 입력을 Controller가 직접 처리
- MVVM: 사용자 입력은 ViewModel이 처리합니다.
- 데이터 바인딩:
- MVC : 데이터 바인딩이 자동 X, Controller를 통해 수동으로 처리
- MVVM : 데이터 바인딩이 자동, View와 ViewModel 간의 데이터 동기화가 프레임워크에 의해 자동으로 처리
예시 코드
# Model
class Song:
def __init__(self, title, artist):
self.title = title
self.artist = artist
# ViewModel
class SongViewModel:
def __init__(self, song: Song):
self._song = song
@property
def display_title(self):
return f"{self._song.title} by {self._song.artist}"
# View
class SongView:
def __init__(self, viewmodel: SongViewModel):
self.viewmodel = viewmodel
def show(self):
print(self.viewmodel.display_title)
# 사용 예시
song = Song("How sweet", "뉴진스")
song_vm = SongViewModel(song)
view = SongView(song_vm)
view.show()
MVVM 패턴
소프트웨어 디자인 패던, UI 개발에 사용. 뷰(View)와 모델(Model) 사이의 강한 결합을 줄이기 위해 도입
- Model : 애플리케이션의 데이터와 비즈니스 로직을 관리
- View : 사용자 인터페이스 요소
- ViewModel : View와 Model 사이에서 데이터를 중계하고, 데이터 바인딩을 통해 View에 데이터를 전달
MVC와 MVVM의 차이점
- 사용자 입력 처리:
- MVC: 사용자 입력을 Controller가 직접 처리
- MVVM: 사용자 입력은 ViewModel이 처리합니다.
- 데이터 바인딩:
- MVC : 데이터 바인딩이 자동 X, Controller를 통해 수동으로 처리
- MVVM : 데이터 바인딩이 자동, View와 ViewModel 간의 데이터 동기화가 프레임워크에 의해 자동으로 처리
예시 코드
# Model
class Song:
def __init__(self, title, artist):
self.title = title
self.artist = artist
# ViewModel
class SongViewModel:
def __init__(self, song: Song):
self._song = song
@property
def display_title(self):
return f"{self._song.title} by {self._song.artist}"
# View
class SongView:
def __init__(self, viewmodel: SongViewModel):
self.viewmodel = viewmodel
def show(self):
print(self.viewmodel.display_title)
# 사용 예시
song = Song("How sweet", "뉴진스")
song_vm = SongViewModel(song)
view = SongView(song_vm)
view.show()
'면접을 위한 CS 전공지식 노트 > 1장 디자인 패턴과 프로그래밍 패러다임' 카테고리의 다른 글
MVP 패턴 (0) | 2024.09.10 |
---|---|
MVC 패턴 (1) | 2024.09.06 |
옵저버패턴 (4) | 2024.09.06 |
전략 패턴 (0) | 2024.09.05 |