๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์›น ์„œ๋น„์Šค

๋””์ž์ธ ํŒจํ„ด(MVC, MVVM, MVP)

by alswlfl 2022. 12. 30.

1. MVC(Model-View-Controller)

Model: ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• 

View: ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด๋Š” ๊ฒƒ

Controller: ์‚ฌ์šฉ์ž๋กœ๋ถ€ํ„ฐ ์‘๋‹ต์„ ๋ฐ›์•„ Model ๋˜๋Š” View๋ฅผ ์—…๋ฐ์ดํŠธ ํ•˜๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•ด์ฃผ๋Š” ์—ญํ• 

MVC

[๋™์ž‘ ์ˆœ์„œ]

1. action(์‚ฌ์šฉ์ž๊ฐ€ ์ œ์ถœํ•œ form๋ฐ์ดํ„ฐ)์ด Controller์—๊ฒŒ ์ „๋‹ฌ๋œ๋‹ค.

2. Controller๋Š” Model์—๊ฒŒ ์ „๋‹ฌํ•˜๊ณ  ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญํ•˜๊ฑฐ๋‚˜ Controller๊ฐ€ View์˜ ๋ฐ์ดํ„ฐ๋ฅผ ์ง์ ‘์ฒ˜๋ฆฌํ•ด์„œ View์—๊ฒŒ ์•Œ๋ฆผ

3. Model์€ ๋กœ์ง์„ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์—ฐ๊ด€๋œ VIew์—๊ฒŒ ์•Œ๋ฆผ

4. View๋Š” ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ํ™”๋ฉด์„ ์—…๋ฐ์ดํŠธ

 

[์žฅ์ ]

๋‹ค๋ฅธ ํŒจํ„ด๋“ค์— ๋น„ํ•ด ์ง๊ด€์ ์ธ ๊ตฌ์กฐ๋กœ ์ƒ๋Œ€์ ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›€

[๋‹จ์ ]

View์™€ Model์‚ฌ์ด์˜ ์—…๋ฐ์ดํŠธ ๊ด€๊ณ„๊ฐ€ ์กด์žฌํ•˜์—ฌ ์˜์กด์„ฑ์ด ๋†’์•„์„œ ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์ง€๋ฉด ๋ณต์žกํ•ด์ง


2. MVVM(Model-View-View Model)

: SPA(Single Page Application)์˜ ํด๋ผ์ด์–ธํŠธ ์ธก ๊ธฐ๋Šฅ์ด ์ค‘์š”ํ•ด์ง€๋ฉด์„œ ์ž์ฃผ ์“ฐ์ด๋Š” ํŒจํ„ด

Model: ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ๊ธฐ๋Šฅ

View: ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด๋Š” ๊ฒƒ

View Model: View๋กœ๋ถ€ํ„ฐ ์š”์ฒญ์„ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ Model์„ ๊ฐฑ์‹ ํ•˜๊ณ , ๊ฐฑ์‹ ๋œ ๋ชจ๋ธ์— ๋”ฐ๋ผ ์ž์‹ ์ด ์†Œ์œ ํ•œ ๋ฐ์ดํ„ฐ๋„ ์—…๋ฐ์ดํŠธ

MVVM

[๋™์ž‘ ์ˆœ์„œ]

1. action์ด View์—๊ฒŒ ์ „๋‹ฌ๋จ

2. View๋Š” ViewModel์—๊ฒŒ ํ•ด๋‹น ๋ฐ์ดํ„ฐ๋ฅผ ํŠน์ • ์š”์ฒญ๊ณผ ์ „๋‹ฌ

3. ViewModel์€ ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ๋กœ์ง์— ๋”ฐ๋ผ ์ฒ˜๋ฆฌํ•˜์—ฌ Model์„ ์—…๋ฐ์ดํŠธ

4. ๊ฐฑ์‹ ๋œ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋…ํ•˜๊ณ  ์žˆ๋Š” ViewModel์ด ์—…๋ฐ์ดํŠธ๋˜๊ณ  ํ•ด๋‹น ViewModel์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋…ํ•˜๋Š” View๊ฐ€ ์—…๋ฐ์ดํŠธ๋จ

 

[์žฅ์ ]

ViewModel์ด ๋”ฐ๋กœ ์ €์žฅํ•˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ๊ตฌ๋…ํ•˜์—ฌ ์ž๋™ ์—…๋ฐ์ดํŠธํ•˜๋Š” ๊ตฌ์กฐ๋กœ View๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ๋ณ€ํ•จ์œผ๋กœ์จ, Model๊ณผ  ViewModel์˜ ์˜์กด์„ฑ ๋ฌธ์ œ ํ•ด๊ฒฐ

[๋‹จ์ ]

๋‹ค๋ฅธ ํŒจํ„ด์— ๋น„ํ•ด ์ƒ๋Œ€์ ์œผ๋กœ ์ดํ•ดํ•˜๊ธฐ ์–ด๋ ต๊ณ  ์ฒ˜์Œ ์„ค๊ณ„๊ฐ€ ๋ณต์žก


3. MVP(Model-View-Presenter)

Model: ๋ฐ์ดํ„ฐ๋ฅผ ์ •์˜ํ•˜๊ณ  ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• 

View: ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์ด๋Š” ๊ฒƒ

Presenter: Model๊ณผ View์˜ ์ค‘๊ณ„์ž ์—ญํ• ๋กœ, ์„œ๋กœ์˜ ์š”์ฒญ๊ณผ ์‘๋‹ต์„ ์ „๋‹ฌํ•ด์คŒ

MVP

[๋™์ž‘ ์ˆœ์„œ]

1. action์ด View์—๊ฒŒ ์ „๋‹ฌ๋จ

2. View๊ฐ€ Presenter์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋ฉฐ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ

3. Presenter๋Š” Model์—๊ฒŒ ๋ฐ์ดํ„ฐ๋ฅผ ์ „๋‹ฌํ•˜๋ฉฐ ์ƒˆ๋กœ์šด ๋ฐ์ดํ„ฐ๋ฅผ ์š”์ฒญ

4. Model์€ Presenter์˜ ์š”์ฒญ์„ ํ† ๋Œ€๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜์—ฌ ์ƒˆ ๋ฐ์ดํ„ฐ๋ฅผ Presenter์—๊ฒŒ ์ „๋‹ฌ

5. Presenter๋Š” ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋กœ View์—๊ฒŒ ์•Œ๋ฆผ

6. View๋Š” ๋ฐ›์€ ๋ฐ์ดํ„ฐ๋ฅผ ํ†ตํ•ด ํ™”๋ฉด์„ ์—…๋ฐ์ดํŠธ

 

[์žฅ์ ]

View์™€ Model์‚ฌ์ด์˜ ์—ฐ๊ฒฐ์ ์ด ์—†์–ด ์˜์กด์„ฑ ๋ฌธ์ œ๊ฐ€ ์‚ฌ๋ผ์ง

[๋‹จ์ ]

Presenter์—ญํ• ์ด ์ค‘์š”ํ•ด์ง€๋ฉด์„œ View์™€ Presenter์‚ฌ์ด์˜ ์˜์กด์„ฑ ๋ฌธ์ œ ๋ฐœ์ƒ


[์ฐธ๊ณ  ์‚ฌ์ดํŠธ]

https://gusrb3164.github.io/web/2021/03/09/mvc-mvp-mvvm-structure/

 

MVC, MVP, MVVM ํŒจํ„ด ๊ฐœ๋…๊ณผ ํŠน์ง• ์ดํ•ดํ•˜๊ธฐ

MVC, MVP ๊ทธ๋ฆฌ๊ณ  ํ”„๋ก ํŠธ์—”๋“œ ๊ตฌ์กฐ์— ์ž์ฃผ ์“ฐ์ด๋Š” MVVM ํŒจํ„ด์„ ์ดํ•ดํ•˜์ž

gusrb3164.github.io

 

'์›น ์„œ๋น„์Šค' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

SSR? CSR?  (0) 2022.12.30
SPA? MPA?  (0) 2022.12.30
์ •์  ์›น? ๋™์  ์›น?  (0) 2022.12.30
HTTP ํ—ค๋”2 - ์บ์‹œ์™€ ์กฐ๊ฑด๋ถ€ ์š”์ฒญ  (0) 2022.12.19
HTTP ํ—ค๋”1 - ์ผ๋ฐ˜ ํ—ค๋”  (0) 2022.12.04