์๋
ํ์ธ์ :) Android ๊ฐ๋ฐ์์ ์ฌ์ฉ๋๋ MVP ์ํคํ
์ฒ ํจํด์ ๋ํด ์์๋ณด๊ฒ ์ต๋๋ค. ์ค๋์ ์ ์๋ ค์ง MVP์ ๊ตฌํ ๋ฐฉ๋ฒ๋ค ์ค์์ Google์์ ์ ๊ณตํ ์ํ ์ฝ๋์ Contract ์ ์ ๋ฐฉ๋ฒ์ ๋ํ ์ค๋ช
์ ์์ธํ ํ๋ ค๊ณ ํฉ๋๋ค. ๊ทธ๋ผ ์ค๋๋ ํ์ดํ
์
๋๋ค ๐ฟ
MVP ์ํคํ
์ฒ๋?
- Model์ ๋ฐ์ดํฐ ๋ก์ง์ ๋ด๋นํ๊ณ , ๋ก์ปฌ ๋ฐ์ดํฐ๋ ์๋ฒ์ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ์ฌ ๊ฐ์ ธ์ต๋๋ค.
- View๋ ํ๋ฉด์์ ๋ฐ์ํ๋ ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๊ณ , UI ์ฒ๋ฆฌ๋ฅผ Presenter์๊ฒ ์์ฒญํฉ๋๋ค.
- Presenter๋ View๋ก๋ถํฐ ์์ฒญ๋ฐ์ ์ด๋ฒคํธ ์ฒ๋ฆฌํ๊ณ ์ฒ๋ฆฌํ ๊ฒฐ๊ณผ๋ฅผ View์๊ฒ ์ ๋ฌํฉ๋๋ค. (๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์ค๊ฑฐ๋, ๋ฐ์ดํฐ๋ฅผ ๊ณ์ฐ ๋ฑ์ ์ฒ๋ฆฌ๋ก ๊ฐ๊ณตํฉ๋๋ค.)
MVP ์ํคํ
์ฒ ํจํด์ ํ๋ฆ
- View๊ฐ ์ฌ์ฉ์ ์ด๋ฒคํธ๋ฅผ ๊ฐ์งํ๋ค.
- View๊ฐ Presenter์๊ฒ ์ด๋ฒคํธ ๋ฐ์ ์ฌ๋ถ๋ฅผ ์ ๋ฌํ๋ค. (์ด๋ฒคํธ ์ฒ๋ฆฌ ์์ฒญ)
- Presenter๋ Model์๊ฒ, View๊ฐ ์์ฒญํ ์ด๋ฒคํธ ์ฒ๋ฆฌ์ ํ์ํ ๋ฐ์ดํฐ๋ฅผ ์์ฒญํ๋ค.
- Model์ ๋ก์ปฌ or ์๋ฒ๋ก๋ถํฐ ๋ฐ์ดํฐ๋ฅผ ๊ฐ์ ธ์จ๋ค.
- Model์ ๊ฐ์ ธ์จ ๋ฐ์ดํฐ๋ฅผ Presenter์๊ฒ ์ ๋ฌํ๋ค.
- Presenter๋ View๊ฐ ์์ฒญํ ์ด๋ฒคํธ ์ฒ๋ฆฌ๋ฅผ ํ๋ค. (๋ฐ์ดํฐ ๊ฐ๊ณต)
- Presenter๋ View์๊ฒ ์ด๋ฒคํธ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ์ ๋ฌ ํ๋ค.
- View๋ Presenter๋ก๋ถํฐ ์ ๋ฌ๋ฐ์ ์ฒ๋ฆฌ ๊ฒฐ๊ณผ๋ฅผ ๊ฐ์ง๊ณ UI๋ฅผ ๊ฐฑ์ ํ๋ค.
Android์์ MVP ์ํคํ
์ฒ๋?
์๋๋ก์ด๋์์ MVP๋ฅผ ๊ตฌํํ๋ ค๋ฉด ?
-
Google architecture๋ฅผ ๋ฐ๋ฅด๋ ๋ฐฉ๋ฒ
- Contract : View์ Presenter์ ๋ํ interface์ ์์ฑ
- Presenter : Contract.Presenter์ ์์๋ฐ์์ ๊ตฌํ
- View (Fragment) : Contract.View์ ์์๋ฐ์์ ๊ตฌํ
-
View์ ๋ํ interface๋ง ์ ์ํ๋ ๋ฐฉ๋ฒ
- interface View : View์ ๋ํ interface๋ง ์ ์
- Presenter : interface ์ ์ ์์ด ํจ์๋ฅผ ์์ฑํ์ฌ ์ฌ์ฉ
- View : interface View์ ์์๋ฐ์์ ์ ์
-
PresenterImpl์ ๊ตฌํํ๋ ๋ฐฉ๋ฒ
- Presenter : Presenter์ View์ ๋ํ interface์ ๊ตฌํ
- PresenterImpl : Presenter์ ์์๋ฐ์์ ๊ตฌํ
- View : Presenter.View์ ์์๋ฐ์์ ๊ตฌํ
์๋๋ก์ด๋์์ MVP ์ํคํ
์ฒ ํจํด์ ํ๋ฆ : Google architecture
MVP ์ํคํ
์ฒ ์์
android/architecture-samples
MVP ์ํคํ
์ฒ์ ์ฅ์
- Model๊ณผ View๋ฅผ ๋ถ๋ฆฌ์์ผ, ๊ฒฐํฉ๋๋ฅผ ์์จ ์ ์์ต๋๋ค.
- Model ๊ด๋ จ ์ฒ๋ฆฌ๋ค์ Presenter๋ฅผ ํตํด์ ์ด๋ค์ง๊ธฐ ๋๋ฌธ์, View๋ Model์ ๋ํด ์ํ์๊ฐ ์์ต๋๋ค.
- MVP ๊ฐ ์ญํ ์ ๋ํ ์ถ์ํ๊ฐ ๊ฐ๋ฅํ๊ณ ์ด๋ฅผ ํตํด, ๋ถ๋ฆฌ๊ฐ ๊น๋ํ๊ฒ ์ด๋ค์ง ์ ์์ต๋๋ค.
- ํ ํด๋์ค์ ์ฝ๋๊ฐ ๋งค์ฐ ๋ฐฉ๋ํด์ง๋ ๊ฒ์ ๋ง์ ์ ์๊ฒ ๋ฉ๋๋ค.
MVP ์ํคํ
์ฒ์ ๋จ์
- Presenter์ View๋ 1:1 ๊ด๊ณ๋ฅผ ๊ฐ์ ธ์ผํ๋ฏ๋ก, ๋ ๊ฐ์ ๊ฒฐํฉ๋๊ฐ ๋์์ง๋๋ค.
๋ ํผ๋ฐ์ค
android/architecture-samples
Android MVP ๋ฌด์์ ๋ฐ๋ผํ๊ธฐ - Presenter/View ์์ฑํ๊ธฐ