MVC ํจํด & JavaFX
MVC ํจํด
์ํํธ์จ์ด๋ฅผ โ๋ชจ๋ธ, ๋ทฐ, ์ปจํธ๋กค๋ฌโ ๊ตฌ์ฑ ์์๋ก ๋ชจ๋ํ ํ์ฌ ๊ฐ๋ฐํ๋ ์ํคํ
์ฒ ํจํด
M - Model : ๋ชจ๋ธ โ ๋ฐ์ดํฐ
V - View : ๋ทฐ โ ํ๋ฉด
C - Controller : ์ปจํธ๋กค๋ฌ โ ๋ชจ๋ธ, ๋ทฐ ์ ์ดํ๋ ์ญํ
MVC (Model-View-Controller) ์ํคํ
์ฒ ํจํด์ ์ํํธ์จ์ด ๋์์ธ์์ ์ฌ์ฉ๋๋ ๊ตฌ์กฐ์ ํจํด์ผ๋ก, ์ ํ๋ฆฌ์ผ์ด์
์ ์ธ ๊ฐ์ง ์ฃผ์ ๊ตฌ์ฑ ์์๋ก ๋ถ๋ฆฌํฉ๋๋ค:
๊ตฌ์ฑ ์์
โข
Model (๋ชจ๋ธ): ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง์ ๊ด๋ฆฌํฉ๋๋ค.
โข
View (๋ทฐ): ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ๋ด๋นํ๋ฉฐ, ๋ฐ์ดํฐ๋ฅผ ํ์ํฉ๋๋ค.
โข
Controller (์ปจํธ๋กค๋ฌ): ์ฌ์ฉ์ ์
๋ ฅ์ ์ฒ๋ฆฌํ๊ณ , ๋ชจ๋ธ๊ณผ ๋ทฐ ์ฌ์ด์ ์ํธ์์ฉ์ ์กฐ์ ํฉ๋๋ค.
๊ตฌ์ฑ ์์ | ์ค๋ช
| ์ญํ |
๋ชจ๋ธ (Model) | ๋ฐ์ดํฐ์ ๋ฐ์ดํฐ ์ฒ๋ฆฌ ๋ก์ง์ ๋ด๋น | - ๋ฐ์ดํฐ ๊ด๋ฆฌ ๋ฐ ์
๋ฐ์ดํธ
- ๋น์ฆ๋์ค ๋ก์ง ์ํ
- ๋ฐ์ดํฐ์ ์ ํจ์ฑ ๊ฒ์ฌ ๋ฐ ์ ์ง
- ๋ฐ์ดํฐ๋ฒ ์ด์ค์์ ์ํธ ์์ฉ |
๋ทฐ (View) | ์ฌ์ฉ์ ์ธํฐํ์ด์ค(ํ๋ฉด)์ ๋ด๋น | - ๋ฐ์ดํฐ๋ฅผ ์๊ฐ์ ์ผ๋ก ํ์
- ์ฌ์ฉ์ ์
๋ ฅ ์์ง ๋ฐ ์ ๋ฌ
- ๋ชจ๋ธ์ ๋ณ๊ฒฝ ์ฌํญ์ ๋ฐ์ํ์ฌ ํ๋ฉด ๊ฐฑ์
- ์ฌ์ฉ์์ ์ํธ ์์ฉํ๋ ์ธํฐํ์ด์ค ์ ๊ณต |
์ปจํธ๋กค๋ฌ (Controller) | ๋ชจ๋ธ๊ณผ ๋ทฐ ์ฌ์ด์ ์ค๊ฐํ๋ ์ญํ | - ์ฌ์ฉ์ ์
๋ ฅ ํด์ ๋ฐ ์ฒ๋ฆฌ
- ๋ชจ๋ธ ์
๋ฐ์ดํธ ๋ฐ ๊ด๋ฆฌ
- ๋ชจ๋ธ๊ณผ ๋ทฐ ๊ฐ์ ์ํธ ์์ฉ ๊ด๋ฆฌ
- ๋น์ฆ๋์ค ๋ก์ง ๋ฐ ํ๋ฆ ์ ์ด |
ํจํด? (Pattern)
๋ชจ๋ฒ ๋ต์
์ํคํ ์ฒ ํจํด
์ํํธ์จ์ด ์ค๊ณ ๊ตฌ์กฐ์ ๋ํ ๋ชจ๋ฒ ๋ต์
๋์์ธ ํจํด
์ํํธ์จ์ด ์ค๊ณ์ ์ฝ๋์ ๋ํ ๋ชจ๋ฒ ๋ต์
JavaFX์์์ MVC ํจํด ๊ตฌํ
JavaFX์์๋ FXML์ ์ฌ์ฉํ์ฌ View(๋ทฐ) ์ญํ ์ ๋ด๋นํฉ๋๋ค.
FXML์ด๋?
โข
FXML์ XML ๊ธฐ๋ฐ์ ๋งํฌ์
์ธ์ด๋ก, JavaFX์ ์ฌ์ฉ์ ์ธํฐํ์ด์ค๋ฅผ ์ ์ธ์ ์ผ๋ก ์ ์ํฉ๋๋ค.
โข
UI ๊ตฌ์กฐ๋ฅผ ์ฝ๋์ ๋ถ๋ฆฌํ์ฌ ๋์์ธ๊ณผ ๋ก์ง์ ๋ถ๋ฆฌ๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค.
โข
Scene Builder์ ๊ฐ์ ๋๊ตฌ๋ฅผ ์ฌ์ฉํ์ฌ ์๊ฐ์ ์ผ๋ก UI๋ฅผ ๋์์ธํ ์ ์์ต๋๋ค.
JavaFX MVC ๊ตฌ์กฐ
๊ตฌ์ฑ ์์ | JavaFX์์์ ์ญํ | ๊ตฌํ ๋ฐฉ์ |
Model (๋ชจ๋ธ) | ๋ฐ์ดํฐ์ ๋น์ฆ๋์ค ๋ก์ง | - Java ํด๋์ค๋ก ๊ตฌํ- POJO (Plain Old Java Object)- ๋ฐ์ดํฐ๋ฒ ์ด์ค ์ฐ๋ ๋ก์ง |
View (๋ทฐ) | ์ฌ์ฉ์ ์ธํฐํ์ด์ค | -FXML ํ์ผ๋ก ๊ตฌํ- UI ์ปดํฌ๋ํธ๋ฅผ XML ํ์์ผ๋ก ์ ์- CSS๋ฅผ ํตํ ์คํ์ผ๋ง |
Controller (์ปจํธ๋กค๋ฌ) | ์ด๋ฒคํธ ์ฒ๋ฆฌ ๋ฐ ์ค์ฌ | - Java ํด๋์ค๋ก ๊ตฌํ- @FXML ์ด๋
ธํ
์ด์
์ฌ์ฉ- FXML์ ์ปดํฌ๋ํธ์ ์ฐ๊ฒฐ |
FXML์ ์ฅ์
โข
๊ด์ฌ์ฌ์ ๋ถ๋ฆฌ: UI ๋์์ธ(FXML)๊ณผ ๋ก์ง(Controller)์ด ๋ช
ํํ ๋ถ๋ฆฌ๋ฉ๋๋ค.
โข
์ ์ง๋ณด์์ฑ ํฅ์: UI ๋ณ๊ฒฝ ์ Java ์ฝ๋๋ฅผ ์์ ํ ํ์๊ฐ ์์ต๋๋ค.
โข
์ฌ์ฌ์ฉ์ฑ: ๋์ผํ FXML ํ์ผ์ ์ฌ๋ฌ ๊ณณ์์ ์ฌ์ฌ์ฉํ ์ ์์ต๋๋ค.
โข
ํ์
์ฉ์ด: ๋์์ด๋๋ FXML์, ๊ฐ๋ฐ์๋ Controller๋ฅผ ๋ด๋นํ ์ ์์ต๋๋ค.




