728x90
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()
728x90
'๐๏ธ ์คํฐ๋ ํ๋ > ๐ ๋ฉด์ ์ ์ํ CS ์ ๊ณต์ง์ ๋ ธํธ' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[๋ง๋ฌด๋ฆฌ] ์น ์ํ๊ด๋ฆฌ์ ์ธ์ฆ (0) | 2024.10.10 |
---|---|
[๋ง๋ฌด๋ฆฌ] ์น ํต์ ๊ธฐ์ด (1) | 2024.10.09 |
[์ด์์ฒด์ ] ํ๋ก์ธ์ค์ ์ค๋ ๋ (0) | 2024.09.18 |
[๋คํธ์ํฌ] HTTP (1) | 2024.09.12 |
[๋์์ธํจํด] ์ ๋ต ํจํด (0) | 2024.09.10 |