Skip to content

Latest commit

ย 

History

History
80 lines (50 loc) ยท 3.61 KB

MVC.md

File metadata and controls

80 lines (50 loc) ยท 3.61 KB

MVC ํŒจํ„ด

written by sohyeon, hyemin ๐Ÿ’ก


1. MVC ํŒจํ„ด์ด๋ž€?

MVC๋ž€, Model View Controller์˜ ์•ฝ์ž๋กœ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ์„ธ๊ฐ€์ง€ ์—ญํ• ๋กœ ๊ตฌ๋ถ„ํ•œ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•๋ก ์ž…๋‹ˆ๋‹ค.

๊ฐ„๋žตํ•˜๊ฒŒ ์—ญํ• ์„ ๊ตฌ๋ถ„ํ•˜์ž๋ฉด ์•„๋ž˜์™€ ๊ฐ™์Šต๋‹ˆ๋‹ค.

  • Model: ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์˜ ๋ฐ์ดํ„ฐ, ์ž๋ฃŒ
  • View: ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ๋ถ€๋ถ„
  • Controller: Model๊ณผ View์‚ฌ์ด๋ฅผ ์ด์–ด์ฃผ๋Š” ์—ญํ• 

์ด๋ ‡๊ฒŒ ๊ฐ์ž์˜ ์—ญํ• ์„ ๋ถ„๋ฆฌํ•จ์œผ๋กœ์„œ ์œ ์ง€ ๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๊ณ  ํ”„๋กœ๊ทธ๋žจ์˜ ํ™•์žฅ์„ฑ๊ณผ ์œ ์—ฐ์„ฑ์„ ๋†’์ผ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

1-1. Web์— ์ ์šฉ๋œ MVC ์˜ˆ์‹œ

  1. ์‚ฌ์šฉ์ž๊ฐ€ ์›น์‚ฌ์ดํŠธ์— ์ ‘์†ํ•œ๋‹ค. (Uses)
  2. Controller๋Š” ์‚ฌ์šฉ์ž๊ฐ€ ์š”์ฒญํ•œ ์›นํŽ˜์ด์ง€๋ฅผ ์„œ๋น„์Šค ํ•˜๊ธฐ ์œ„ํ•ด์„œ ๋ชจ๋ธ์„ ํ˜ธ์ถœํ•œ๋‹ค. (Manipulates)
  3. Model์€ ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค๋‚˜ ํŒŒ์ผ๊ณผ ๊ฐ™์€ ๋ฐ์ดํ„ฐ ์†Œ์Šค๋ฅผ ์ œ์–ดํ•œ ํ›„์— ๊ทธ ๊ฒฐ๊ณผ๋ฅผ ๋ฆฌํ„ดํ•œ๋‹ค.
  4. Controller๋Š” Model์ด ๋ฆฌํ„ดํ•œ ๊ฒฐ๊ณผ๋ฅผ View์— ๋ฐ˜์˜ํ•œ๋‹ค. (Updates)
  5. ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜์˜๋œ VIew๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง„๋‹ค. (Sees)

2. ๊ตฌ์„ฑ

2-1. Model

Model์€ ํ”„๋กœ๊ทธ๋žจ์— ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ๋ฅผ ์˜๋ฏธํ•˜๋ฉฐ
๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค, ์ƒ์ˆ˜, ๋ฌธ์ž์—ด๊ณผ ๊ฐ™์€ ๋ณ€์ˆ˜๋“ค, ๋น„์ „ ํ”„๋กœ๊ทธ๋žจ์ด๋ผ๋ฉด ์นด๋ฉ”๋ผ ์ •๋ณด์™€ ๊ฐ™์€ ๊ฒƒ๋“ค์ด ํ•ด๋‹น๋ฉ๋‹ˆ๋‹ค.

Model์—๋Š” View๋‚˜ Controller์˜ ์ •๋ณด๊ฐ€ ์ „ํ˜€ ์—†๊ณ  ์ •๋ณด๋งŒ ๋ฐ˜ํ™˜ํ•˜๊ฑฐ๋‚˜ ์„ค์ •ํ•ฉ๋‹ˆ๋‹ค.

2-2. View

VIew๋Š” ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” UI์  ์š”์†Œ๋“ค์„ ์˜๋ฏธํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ ์ œ์–ดํ•˜๊ณ  ๋ฐ์ดํ„ฐ๋ฅผ ํ™•์ธํ•  ์ˆ˜ ์žˆ๋Š” ์˜์—ญ์ž…๋‹ˆ๋‹ค.

VIew์—์„œ๋Š” ๋ณ„๋„์˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๊ด€ํ•˜์ง€ ์•Š๊ณ  ์ž…๋ ฅ๋ฐ›๊ณ  ์ถœ๋ ฅํ•ด์ฃผ๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” Model์„ ํ™œ์šฉํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

2-3. Controller

Controller๋Š” Model๊ณผ View๋ฅผ ์ด์–ด์ฃผ๋Š” ๋‹ค๋ฆฌ ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค.
์‚ฌ์šฉ์ž๊ฐ€ View์—์„œ ์–ด๋–ค ํ–‰๋™์„ ํ–ˆ์„ ๋•Œ ๊ทธ ๋‚ด๋ถ€์ ์ธ ์ฒ˜๋ฆฌ๋Š” Controller์—์„œ ๊ด€๋ฆฌํ•˜๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

3. ์žฅ๋‹จ์ 

3-1. ์žฅ์ 

  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ํ™•์žฅ์„ฑ ์ฆ๊ฐ€
  • ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์œ ์—ฐ์„ฑ ์ฆ๊ฐ€
  • ๊ฐ์ž์˜ ๋ชฉ์ ์— ๋งž๋Š” ๋ถ„๋ฆฌ๋œ ์ฝ”๋“œ๋ฅผ ํ†ตํ•ด ์ค‘๋ณต ์ตœ์†Œํ™”

3-2. ๋‹จ์ 

  • View์™€ Model์˜ ์˜์กด์„ฑ์œผ๋กœ ์ธํ•ด ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•ด์งˆ ์ˆ˜ ์žˆ๋‹ค.

    Model์€ ๋‹ค์ˆ˜์˜ View๋ฅผ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๊ณ  ๋ฐ˜๋Œ€๋กœ Controller๋ฅผ ํ†ตํ•ด ํ•œ View์— ์—ฐ๊ฒฐ๋˜๋Š” Model๋„ ์—ฌ๋Ÿฌ๊ฐœ๊ฐ€ ๋  ์ˆ˜ ์žˆ๋‹ค.
    ์ด๋Ÿฐ ๊ด€๊ณ„๋Š” View์™€ Model์˜ ์˜์กด์„ฑ์„ ๋†’์ด๊ฒŒ ๋œ๋‹ค. ์ข‹์€ ์„ค๊ณ„๋กœ ์˜์กด์„ฑ์„ ์ค„์ผ ์ˆ˜๋Š” ์žˆ๊ฒ ์ง€๋งŒ
    Controller์— ๋‹ค์ˆ˜์˜ Model๊ณผ View๊ฐ€ ์—ฐ๊ฒฐ๋˜๋Š” ๋ณต์žกํ•œ ์ƒํ™ฉ์ด ์œ ๋ฐœ ๋˜๋Š” ์ƒํ™ฉ์„ ํ”ผํ•˜๊ธฐ๋Š” ์‰ฝ์ง€์•Š๋‹ค.

    ๊ฒฐ๊ตญ, MVC ๊ทœ๋ชจ๊ฐ€ ๋น„๋Œ€ํ•ด์ง€๊ณ  ๋ณต์žกํ•ด์ง€๋ฉฐ ์ƒˆ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•  ๋•Œ๋งˆ๋‹ค ์˜์กด์„ฑ์„ ์ผ์ผ์ด ํ•ด๊ฒฐํ•ด์•ผ ํ•˜๋Š” ์ƒํ™ฉ์ด ์˜ค๊ฒŒ ๋œ๋‹ค.
    ์ด๋Ÿฐ ํ˜•ํƒœ์˜ MVC๋ฅผ MassiveViewController๋ผ๊ณ  ๋ถ€๋ฅธ๋‹ค. MVC์˜ ํ•œ๊ณ„๋ฅผ ํ‘œํ˜„ํ•˜๋Š” ์šฉ์–ด์ด๊ธฐ๋„ ํ•˜๋‹ค.

4. ๊ฒฐ๋ก 

๋ฌผ๋ก  MVC๊ฐ€ ๊ฐ–๋Š” ๋ช…๋ฃŒํ•œ ์žฅ์ ๋„ ์žˆ์ง€๋งŒ,
Controller๊ฐ€ View์™€ ๊ฐ•ํ•œ ์˜์กด์„ฑ์„ ๊ฐ€์ง์œผ๋กœ์„œ ๋ฐœ์ƒํ•˜๋Š” ํ•œ๊ณ„์ ์„ ์ธ์ง€ํ•˜๊ณ 
์ ์ ˆํ•œ ์ƒํ™ฉ์— MVC๋ฅผ ์ ์šฉํ•  ์ˆ˜ ์žˆ์–ด์•ผ ํ•œ๋‹ค.
๋˜ํ•œ MVC๋กœ ๋ถ€ํ„ฐ ํŒŒ์ƒ๋œ ๋‹ค๋ฅธ ํŒจํ„ด๋“ค์„ ํ™œ์šฉํ•˜๋Š” ๋ฐฉ์•ˆ๋„ ๊ณ ๋ฏผํ•ด ๋ณด์•„์•ผ ํ•œ๋‹ค.

Reference & Additional Resources