iOS - MVC Pattern

์ดํ•œ์†”ยท2023๋…„ 8์›” 26์ผ
0

iOS ์•ฑ๊ฐœ๋ฐœ ๐Ÿ

๋ชฉ๋ก ๋ณด๊ธฐ
14/54

Design Pattern

๐Ÿ’ก Pattern์ด ์™œ ํ•„์š”ํ•œ๊ฐ€?
๋””์ž์ธ ํŒจํ„ด์€ ๊ฑด์ถ•์œผ๋กœ์น˜๋ฉด ๊ณต๋ฒ•์— ํ•ด๋‹นํ•˜๋Š” ๊ฒƒ์œผ๋กœ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ฐœ๋ฐœ ๋ฐฉ๋ฒ•์„ ๊ณต์‹ํ™” ํ•œ ๊ฒƒ์ด๋‹ค. ์†Œ์ˆ˜์˜ ๋›ฐ์–ด๋‚œ ์—”์ง€๋‹ˆ์–ด๊ฐ€ ํ•ด๊ฒฐํ•œ ๋ฌธ์ œ๋ฅผ ๋‹ค์ˆ˜์˜ ์—”์ง€๋‹ˆ์–ด๋“ค์ด ์ฒ˜๋ฆฌ ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•œ ๊ทœ์น™์ด๋ฉด์„œ, ๊ตฌํ˜„์ž๋“ค ๊ฐ„์˜ ์ปค๋ฎค๋‹ˆ์ผ€์ด์…˜์˜ ํšจ์œจ์„ฑ์„ ๋†’์ด๋Š” ๊ธฐ๋ฒ•์ด๋‹ค.
ํ˜‘์—… ์‹œ UI๋Š” ๋””์ž์ด๋„ˆ๋‚˜ ๋””์ž์ธ์„ ๋‹ด๋‹นํ•˜๋Š” ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“ค๊ณ , ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์€ ๊ฐœ๋ฐœ์ž๊ฐ€ ๋งŒ๋“ค๊ธฐ ๋•Œ๋ฌธ์— ์ฝ”๋“œ๋ฅผ ์˜์กด์ ์ด์ง€ ์•Š๊ฒŒ ๋ถ„๋ฆฌ๋ฅผ ์ž˜ ํ•ด์•ผํ•œ๋‹ค.
UI๋ฅผ ๊ทธ๋ฆฌ๋Š” View์™€ ๋ฐ์ดํ„ฐ, ๋กœ์ง์„ ๋‹ด์€ Model์ด ์„œ๋กœ ์˜์กด์ ์ธ ๊ด€๊ณ„๋ฅผ ํ˜•์„ฑํ•˜์—ฌ ์ผ๋ฐฉ์  ํ˜น์€ ์Œ๋ฐฉ์ ์œผ๋กœ ์˜ํ–ฅ์„ ๋ฐ›๊ฒŒ ๋˜๋Š” ๊ฒƒ์ด ๋ฌธ์ œ๋‹ค! ๋ผ๋Š” ์ƒ๊ฐ์—์„œ
View์™€ Model์„ ๋ถ„๋ฆฌํ•˜์—ฌ ์„œ๋กœ ์˜ํ–ฅ์„ ๋ฐ›์ง€ ์•Š๊ฒŒ ํ•˜์ž! ๋ผ๋Š” ๊ฒฐ๋ก ์œผ๋กœ ๋‚˜ํƒ€๋‚œ ๊ฒƒ์ด๋‹ค.
Pattern์ด ๋‚˜ํƒ€๋‚œ ์ด์œ ๋Š” view์™€ model๊ฐ„์˜ ์˜์กด์„ฑ ์ œ๊ฑฐ์ด๋‹ค.



Architecture

์• ํ”Œ๋ฆฌ์ผ€์ด์…˜์„ ๋””์ž์ธํ•˜๊ณ  ๊ตฌ์กฐํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•
์ข‹์€ ์•„ํ‚คํ…์ฒ˜๋Š”
1. ์—„๊ฒฉํ•œ ๋ฃฐ์— ๋”ฐ๋ผ ๊ฐœ์ฒด๋“ค๊ฐ„์˜ ์ฑ…์ž„์„ ๊ท ํ˜•์žˆ๊ฒŒ ๋ถ„๋ฆฌํ•ด์•ผํ•œ๋‹ค.
2. ์ฒซ๋ฒˆ์งธ ๋งํ•œ ํŠน์ง•์œผ๋กœ๋ถ€ํ„ฐ ๋‚˜์˜ฌ ์ˆ˜ ์žˆ๋Š” ํ…Œ์ŠคํŠธ๋“ค์ด ๊ฐ€๋Šฅํ•ด์•ผํ•œ๋‹ค.
3. ์‚ฌ์šฉ์ด ํŽธํ•˜๊ณ  ์œ ์ง€๋ณด์ˆ˜๊ฐ€ ์‰ฌ์›Œ์•ผ ํ•œ๋‹ค.



MVC Pattern

MVC๋Š” ์‚ฌ์šฉ์ž ์ธํ„ฐํŽ˜์ด์Šค ๊ธฐ๋ฐ˜ ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ตฌ์กฐํ™”ํ•˜๊ณ  ๊ตฌ์„ฑํ•˜๊ธฐ ์œ„ํ•œ ์•„ํ‚คํ…์ฒ˜์ ์ธ ๊ฐœ๋…์ด์ž ๋””์ž์ธ ํŒจํ„ด์ด๋‹ค.

Model: ์•ฑ์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋ฐ์ดํ„ฐ์™€ ๊ทธ ๋ฐ์ดํ„ฐ๋ฅผ ์ฒ˜๋ฆฌํ•˜๋Š” ๋กœ์ง ํฌํ•จ
View: ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ํ™”๋ฉด ๊ตฌ์„ฑ
Controller: View์—์„œ ์ž…๋ ฅ์— ๋Œ€ํ•ด Model์˜ ๋กœ์ง์„ ์‚ฌ์šฉํ•ด ์ฒ˜๋ฆฌ

๋ทฐ์™€ ๋ชจ๋ธ๋“ค์„ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๊ด€๋ฆฌํ•˜๋ฉด์„œ
input์ด ๋“ค์–ด์˜ค๋ฉด ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ ๋‹นํ•œ ๋ทฐ์™€ ๋ชจ๋ธ์„ ์ฐพ์•„ ํ‘œ์‹œํ•˜๋Š” ๋ฐฉ์‹์ด๋‹ค.
๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ํ•ด๋‹น ๋ทฐ์™€ ๋ชจ๋ธ์„ ๋ชจ๋‘ ๊ด€๋ฆฌํ•˜๊ณ ,
๋ฐ์ดํ„ฐ ์ฒ˜๋ฆฌ ๋กœ์ง์„ ํฌํ•จํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋ทฐ์™€ ๋ชจ๋ธ์—์„œ์˜ input์€ ๋ชจ๋‘ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์—์„œ ์ฒ˜๋ฆฌ๋œ๋‹ค.

๐Ÿ’ก ์™œ ์ด๋ ‡๊ฒŒ ์„ค๊ณ„ํ–ˆ์„๊นŒ?
๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ์ค‘๊ฐ„๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•˜๊ณ  ๋ทฐ์™€ ๋ชจ๋ธ์€ ์„œ๋กœ ๋ณ„๊ฐœ์˜ ์˜์—ญ์œผ๋กœ ๋ถ„๋ฆฌ๋˜์–ด ์„œ๋กœ ๊ฐ„์„ญ์ด ์—†๊ธฐ ๋•Œ๋ฌธ์— ๋ทฐ์™€ ๋ชจ๋ธ์˜ ์ˆ˜์ •์ด ์‰ฝ๋‹ค.
๋ทฐ์™€ ๋ชจ๋ธ์˜ ์ƒํ˜ธ์˜์กด์„ฑ์„ ์—†์• ๊ณ , ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ทฐ์™€ ๋ชจ๋ธ์˜ ์ค‘๊ฐ„๋‹ค๋ฆฌ ์—ญํ• ์„ ํ•ด์ฃผ๋Š” ๊ฒƒ์ด MVCํŒจํ„ด์˜ ๊ฐ€์žฅ ์ด์ƒ์ ์ธ ํ˜•ํƒœ๋‹ค.



MVC ํŒจํ„ด์˜ ์žฅ๋‹จ์ 

์žฅ์ 

  1. ๋‹ค๋ฅธ ํŒจํ„ด์— ๋น„ํ•ด ์ฝ”๋“œ๋Ÿ‰์ด ์ ๊ณ  ์• ํ”Œ์—์„œ ๊ธฐ๋ณธ์ ์œผ๋กœ ์ง€์›ํ•˜๊ณ  ์žˆ๋Š” ํŒจํ„ด์ด๊ธฐ ๋•Œ๋ฌธ์— ์‰ฝ๊ฒŒ ์ ‘๊ทผํ•  ์ˆ˜ ์žˆ๋‹ค.
  2. ๋งŽ์€ ๊ฐœ๋ฐœ์ž๋“ค์—๊ฒŒ ์นœ์ˆ™ํ•œ ํŒจํ„ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๊ฐœ๋ฐœ์ž๋“ค์ด ์‰ฝ๊ฒŒ ์œ ์ง€๋ณด์ˆ˜ ํ•  ์ˆ˜ ์žˆ๋‹ค.
  3. ๊ฐœ๋ฐœ ์†๋„๊ฐ€ ๋น ๋ฅด๊ธฐ ๋•Œ๋ฌธ์— ์•„ํ‚คํ…์ฒ˜๊ฐ€ ์ค‘์š”ํ•˜์ง€ ์•Š์„ ๋•Œ ์‚ฌ์šฉํ•˜๊ฑฐ๋‚˜ ๊ทœ๋ชจ๊ฐ€ ์ž‘์€ ํ”„๋กœ์ ํŠธ์—์„œ ์‚ฌ์šฉํ•˜๊ธฐ ์ข‹๋‹ค.

๋‹จ์ 


๊ทธ๋ฆผ์ฒ˜๋Ÿผ ๋ทฐ์™€ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋„ˆ๋ฌด ๋ฐ€์ ‘ํ•˜๊ฒŒ ์—ฐ๊ฒฐ๋˜์–ด ์žˆ๋‹ค.
๋ทฐ์™€ ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ถ™์–ด ์žˆ๊ณ , ์ปจํŠธ๋กค๋Ÿฌ๊ฐ€ ๋ทฐ์˜ Life Cycle๊นŒ์ง€ ๊ด€๋ฆฌํ•˜๊ธฐ ๋•Œ๋ฌธ์— ๋ทฐ์™€ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ๋ฅผ ๋ถ„๋ฆฌํ•˜๊ธฐ ์–ด๋ ต๋‹ค.
Life Cycle ๊ด€๋ฆฌ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ ๋ฐ์ดํ„ฐ ๋กœ์ง ์ฒ˜๋ฆฌ ๋“ฑ ๋งŽ์€ ์ฝ”๋“œ๊ฐ€ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์— ์ž‘์„ฑ๋˜์„œ ๋ทฐ์ปจํŠธ๋กค๋Ÿฌ์˜ ํฌ๊ธฐ๋Š” ๋น„๋Œ€ํ•ด์ง€๊ณ  ๋‚ด๋ถ€ ๊ตฌ์กฐ๋Š” ๋ณต์žกํ•ด์ ธ์„œ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋–จ์–ด์ง€๊ณ , ์œ ๋‹› ํ…Œ์ŠคํŠธ๋ฅผ ํ•˜๊ธฐ ํž˜๋“ค๋‹ค.
๊ทธ๋ž˜์„œ Massive View Controller๋ผ๋Š” ์˜ค๋ช…์ด ์žˆ๊ธฐ๋„ํ•˜๋‹ค.
์ด๋ ‡๊ฒŒ ๋ณต์žกํ•ด์ง„ ์ฝ”๋“œ๋Š” ํ”„๋กœ์ ํŠธ ๊ทœ๋ชจ๊ฐ€ ์ปค์งˆ์ˆ˜๋ก ์œ ์ง€, ๋ณด์ˆ˜ํ•˜๊ธฐ ํž˜๋“ค๋‹ค.

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