๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

๐Ÿ’ป/Java CleanCode Study

๐Ÿช“ MVC ํŒจํ„ด์ด๋ž€? : Model, View, Controller

1) User๊ฐ€ Controller๋ฅผ ์กฐ์ž‘ํ•œ๋‹ค.
2) Controller๋Š” Model์„ Manipulate(์กฐ์ข…)ํ•˜์—ฌ

๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ–๊ณ ์˜จ๋‹ค. (์•Œ๋งž์€ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์„ ์ˆ˜ํ–‰)

3) ๊ฐ€์ ธ์˜จ ๋ฐ์ดํ„ฐ๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ View๋ฅผ ๊ฐฑ์‹ ํ•œ๋‹ค.
4) ๊ฐฑ์‹ ๋œ View๋ฅผ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ๋œ๋‹ค.

 

- 2022.03.03

: lottoGame mvc ํŒจํ„ด ์žฌ ์ ์šฉํ•˜๋ฉฐ ์ดํ•ดํ•œ ๋‚ด์šฉ

์ปจํŠธ๋กค๋Ÿฌ ๊ทธ ์ž์ฒด์—์„œ view๋ฅผ ํ˜ธ์ถœํ•ด ์ž…๋ ฅ๋ฐ›๊ฒŒ ํ•˜๊ณ ,
์—ฌ๊ธฐ์„œ ์ „๋‹ฌ๋ฐ›์€ ๊ฐ’์„ view ํ˜ธ์ถœํ•ด์„œ ์ถœ๋ ฅํ•ด์ฃผ๊ฑฐ๋‚˜
์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ model ์˜์—ญ์œผ๋กœ ์ „๋‹ฌํ•ด์„œ ์›ํ•˜๋Š” ๊ฐ’์œผ๋กœ ๋ณ€ํ™˜ํ•˜๊ณ  ๊ฐ’์„ ๊ฐ€์ ธ์™€์„œ
์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ view ํ˜ธ์ถœํ•ด ์ด ๊ฐ’์„ ์‚ฌ์šฉ์ž๊ฐ€ ๋ณผ ์ˆ˜ ์žˆ๊ฒŒ ์ถœ๋ ฅ.

โ‘  model

  • Application ์ •๋ณด, data
  • DB์™€ ์ƒํ˜ธ์ž‘์šฉ
  • ํ”„๋กœ๊ทธ๋žจ์ด ๋ชฉํ‘œํ•˜๋Š” ์ž‘์—…์„ ์›ํ™œํ•˜๊ฒŒ ์ˆ˜ํ–‰ํ•˜๊ธฐ ์œ„ํ•ด ํ•„์š”ํ•œ ๋ฌผ๋ฆฌ์  ๊ฐœ์ฒด
  • ์‚ฌ์šฉ์ž๊ฐ€ ํŽธ์ง‘ํ•˜๊ธธ ์›ํ•˜๋Š” ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋ฅผ ๊ฐ€์ง€๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • view ๋˜๋Š” controller์— ๋Œ€ํ•ด ์–ด๋–ค ์ •๋ณด๋„ ์•Œ๊ณ  ์žˆ์œผ๋ฉด ์•ˆ๋œ๋‹ค.
  • ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋ฉด ์ด์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

+ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง(Business Logic)์„ ๊ตฌํ˜„ํ•˜๋Š” ์˜์—ญ

 

โ‘ก view(inputView, outputView)

  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ณด๋Š” ํ™”๋ฉด. (**์ž…์ถœ๋ ฅ ๊ณผ์ • ๋ฐ ๊ฒฐ๊ณผ**)
  • user interface element.
  • ๋ชจ๋ธ์ด ๊ฐ€์ง€๊ณ  ์žˆ๋Š” ์ •๋ณด๋ฅผ ๋”ฐ๋กœ ์ €์žฅํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
  • ๋‹ค๋ฅธ ๊ตฌ์„ฑ์š”์†Œ๋ฅผ ์•Œ๋ฉด ์•ˆ๋œ๋‹ค.
  • ๋ณ€๊ฒฝ์ด ์ผ์–ด๋‚˜๋ฉด ์ด์— ๋Œ€ํ•œ ์ฒ˜๋ฆฌ๋ฐฉ๋ฒ•์„ ๊ตฌํ˜„ํ•ด์•ผ ํ•œ๋‹ค.

 

โ‘ข controller

  • model(data)๊ณผ view(user interface)๋ฅผ ์—ฐ๊ฒฐ ์‹œ์ผœ์คŒ. (๋‹จ์ˆœ bridge ์—ญํ• )
  • ํ”„๋กœ๊ทธ๋žจ ์ž‘๋™ ์ˆœ์„œ, ๋ฐฉ์‹ ์ฒ˜๋ฆฌ
  • ์‚ฌ์šฉ์ž๊ฐ€ ๋ฐ์ดํ„ฐ๋ฅผ ์ˆ˜์ •ํ•˜๊ฑฐ๋‚˜, ๋ฐ์ดํ„ฐ๋ฅผ ํด๋ฆญํ•˜๋Š” ๋“ฑ์˜ Event๊ฐ€ ๋ฐœ์ƒํ•˜๋ฉด, ์ด Event๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ์—ญํ• 
  • model ๋˜๋Š” view์— ๋Œ€ํ•ด ์•Œ๊ณ  ์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • model ๋˜๋Š” view์˜ ๋ณ€๊ฒฝ์„ ๋ชจ๋‹ˆํ„ฐ๋ง ํ•ด์•ผ ํ•œ๋‹ค.