๐ŸMVVM ํŒจํ„ด ์•Œ์•„๋ณด๊ธฐ

sangheeยท2021๋…„ 8์›” 9์ผ
0

๐ŸšฉiOS

๋ชฉ๋ก ๋ณด๊ธฐ
5/18
post-custom-banner

๋””์ž์ธ ํŒจํ„ด?

๊ธฐ์ˆ ๋ถ€์ฑ„๋ฅผ ์ตœ์†Œํ™”ํ•˜๊ณ  ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ ๋ฐ ์ง€์† ๊ฐ€๋Šฅ์„ฑ์„ ๋†’์ธ๋‹ค. ์‰ฝ๊ฒŒ ๋งํ•ด์„œ ์ฝ”๋“œ๋ฅผ ๊ตฌ์กฐํ™”์‹œํ‚ฌ๊นŒ์— ๋Œ€ํ•œ ์ „๋žต์ด๋‹ค.

๐ŸMVVM(Model - View - ViewModel) ํŒจํ„ด

ํ˜„์žฌ ๊ฐ€์žฅ ๋งŽ์ด ์“ฐ์ด๊ณ  ์žˆ๋Š” ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค.

  • Model: ์•ฑ ๋‚ด์—์„œ ์‚ฌ์šฉํ•˜๋Š” ๋ฐ์ดํ„ฐ(struct)์ด๋‹ค.
  • View: ํ™”๋ฉด์— ๋ณด์—ฌ์ง€๋Š” UI์š”์†Œ(UIView, UIViewController)์ด๋‹ค. MVC์™€๋Š” ๋‹ค๋ฅด๊ฒŒ UIViewController๊ฐ€ ์ถ”๊ฐ€๋˜์—ˆ๋‹ค.
  • ViewModel: ์ด๋ฆ„ ๊ทธ๋Œ€๋กœ View์™€ Model ์‚ฌ์ด์— ์žˆ๋Š”, ์ค‘๊ณ„์ž์ด๋‹ค.

MVC์™€๋Š” ๋‹ค๋ฅธ MVVM์˜ ํŠน์ง•

  • ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ชจ๋ธ์— ์ง์ ‘ ์ ‘๊ทผํ•˜์ง€ ๋ชปํ•œ๋‹ค.
  • ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ทฐ ๋ ˆ์ด์–ด์— ํฌํ•จ๋œ๋‹ค.

์ด์ „ MVC์—์„œ MVVM๋กœ

์—„์ฒญ๋‚œ ์˜ค์ง€๋ผํผ์˜€๋˜ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์˜ ์˜ค์ง€๋ผํ•‘์„ ๋ง‰์•˜๊ณ  ๋ทฐ์— ๋„ฃ์—ˆ๋‹ค. ๊ทธ๋ž˜์„œ ์ค‘๊ณ„์ž์˜ ViewModel์˜ ์—ญํ• ์ด ์ค„์—ˆ๊ณ , ํ•  ์ผ์ด ๋ช…ํ™•ํ•ด์กŒ๋‹ค. ํ•  ์ผ์ด ๋ช…ํ™•ํ•ด์งˆ์ˆ˜๋ก ์ˆ˜์ •์ด ์šฉ์ดํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜์— ํšจ์œจ์ ์ด๋‹ค.

์‹ค์ œ ๊ตฌํ˜„

๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋Š” ๋ทฐ์™€ ๋ทฐ๋ชจ๋ธ์— ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค. ๋ทฐ๋ชจ๋ธ์ด ์ค‘๊ณ„์ž์˜ ์—ญํ• ์„ ํ•˜๊ณ  ์žˆ๋‹ค. ๋ชจ๋“  ๋ฐ์ดํ„ฐ๋Š” ๋ทฐ๋ชจ๋ธ์„ ํ†ตํ•ด์„œ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅํ•˜๋ฉฐ ๋ชจ๋ธ์€ ๋ทฐ๋ ˆ์ด์–ด์™€ ์ง์ ‘ ์†Œํ†ตํ•˜์ง€ ์•Š๋Š”๋‹ค.

profile
๐Ÿ‘ฉโ€๐Ÿ’ป
post-custom-banner

0๊ฐœ์˜ ๋Œ“๊ธ€