Potato
์•ˆ๋…•ํ•˜์„ธ์š”, ๊ฐ์žก๋‹ˆ๋‹ค?๐Ÿฅ” ^___^ ๐Ÿ˜บ github ๋ฐ”๋กœ๊ฐ€๊ธฐ ๐Ÿ‘‰๐Ÿป

Computer/Design Pattern

[๋””์ž์ธํŒจํ„ด] (iOS) ๋””์ž์ธ ํŒจํ„ด์ด๋ž€? ๊ฐœ์š” ๋ฐ ๋ถ„๋ฅ˜ ๋ฐฉ๋ฒ•!

๊ฐ์ž ๐Ÿฅ” 2022. 9. 27. 03:55
๋ฐ˜์‘ํ˜•

 

์Šคํ„ฐ๋””๋ฅผ ์šด์˜ํ•˜๊ณ  ์žˆ์Šต๋‹ˆ๋‹ค. 
์•„๋ž˜ ๊นƒํ—ˆ๋ธŒ PR ๋‚ด์—ญ์„ ๋ณด์‹œ๋ฉด, ๋‹ค์–‘ํ•œ ์˜๊ฒฌ์„ ์ฃผ๊ณ ๋ฐ›์€ history๋ฅผ ๋ณด์‹ค ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

https://github.com/JulSaMo/CS-start/pulls

 


 

๐ŸŸ  ๋””์ž์ธ ํŒจํ„ด (Design Pattern) ์ด๋ž€

- ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๊ฐœ๋ฐœํ•  ๋•Œ ๋ฐœ์ƒํ•˜๋Š” ๋‹ค์–‘ํ•œ ๋ฌธ์ œ์— ๋Œ€ํ•œ ์žฌ์‚ฌ์šฉ ๊ฐ€๋Šฅํ•œ ํƒฌํ”Œ๋ฆฟ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•
  • ํ”„๋กœ๊ทธ๋ž˜๋ฐ์„ ํ•  ๋•Œ ํŠน์ • ์ƒํ™ฉ์— ์ ์šฉ๋˜๋Š” ํŒจํ„ด์„ ์ •ํ˜•ํ™”ํ•ด ๋‘๋ฉด ๋น„์Šทํ•œ ์ƒํ™ฉ์—์„œ๋Š” ๋”์šฑ ๋น ๋ฅด๊ฒŒ ๋Œ€์ฒ˜ํ•  ์ˆ˜ ์žˆ์Œ
  • ํ”„๋กœ์ ํŠธ์— ํ•ญ์ƒ ์ ์šฉํ•ด์•ผํ•˜๋Š” ๊ฒƒ์€ ์•„๋‹ˆ์ง€๋งŒ, ์ถ”ํ›„ ์žฌ์‚ฌ์šฉ, ํ˜ธํ™˜, ์œ ์ง€๋ณด์ˆ˜ ์‹œ ๋ฐœ์ƒํ•˜๋Š” ๋ฌธ์ œ ํ•ด๊ฒฐ์„ ์˜ˆ๋ฐฉํ•˜๊ธฐ ์œ„ํ•ด์„œ ํŒจํ„ด์„ ๋งŒ๋“ค์–ด ๋‘” ๊ฒƒ

๐Ÿ”ธ ๋””์ž์ธ ํŒจํ„ด์˜ ํŠน์ง•

1. ๋””์ž์ดํŒจํ„ด์€ ํ•˜๋‚˜์˜ ์•„์ด๋””์–ด์ด๋‹ค. ํŠน์ •ํ•œ ๊ตฌํ˜„์ด ์•„๋‹ˆ๋‹ค.
2. ๊ฒฝํ—˜์„ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ๋‹ค.
3. ํŠน์ •ํ•œ ํ˜•์‹์„ ๊ฐ–๊ณ  ์ฒด๊ณ„์ ์œผ๋กœ ์ž‘์„ฑ๋˜๋Š” ๊ฒƒ์ด ์ผ๋ฐ˜์ ์ด๋‹ค.
4. ํŒจํ„ด์—๋Š” ๊ฐ๊ธฐ ๋‹ค๋ฅธ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ์กด์žฌํ•˜์—ฌ ๊ณ„์† ์ง„ํ™”ํ•œ๋‹ค.

๐Ÿ”ธ ๋””์ž์ธ ํŒจํ„ด์˜ ์žฅ์ 

  1. ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๊ณผ์ •์—์„œ ์˜์‚ฌ์†Œํ†ต์„ ๋„์™€์ค€๋‹ค.
  • ๋””์ž์ธ ํŒจํ„ด์„ ์•Œ๊ณ  ์žˆ๋Š” ์„ค๊ณ„์ž๋“ค์€ ๋ฌธ์ œ์— ๋Œ€ํ•ด ๊ณตํ†ต์ ์œผ๋กœ ์•Œ๊ณ  ์žˆ๋Š” ํŒจํ„ด์„ ์ด์šฉํ•ด ๋…ผ์˜ํ•  ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ๋”์šฑ ์›ํ™œํ•˜๊ฒŒ ์˜์‚ฌ์†Œํ†ต์ด ๊ฐ€๋Šฅ
  1. ๊ฐœ๋ฐœ ๋น„์šฉ์„ ์ค„์ผ ์ˆ˜ ์žˆ๋‹ค.
  • ๊ฒ€์ฆ๋œ ์ง€์‹์„ ๋ฐ”ํƒ•์œผ๋กœ ํŒจํ„ด์„ ์‚ฌ์šฉํ•˜๋ฏ€๋กœ, ๋†’์€ ์™„์„ฑ๋„์˜ ๋””์ž์ธ์„ ๋น ๋ฅธ ์‹œ๊ฐ„์•ˆ์— ๋งŒ๋“ค์–ด ๋‚ผ ์ˆ˜ ์žˆ๊ธฐ ๋•Œ๋ฌธ์—.
  • ๋˜ํ•œ ์ฝ”๋“œ์˜ ์ˆ˜์ค€์„ ๋†’์—ฌ์ฃผ๋ฉฐ ์ ์€ ์ˆ˜์˜ ํด๋ž˜์Šค๋กœ ์›ํ•˜๋Š” ๋ชฉ์ ์„ ๋‹ฌ์„ฑํ•  ์ˆ˜ ์žˆ๋Š” ํ™˜๊ฒฝ์ด ์ œ๊ณต๋œ๋‹ค.
  1. ๊ฐœ๋ฐœ์ž๋Š” ๊ทธ ํŒจํ„ด ์ด๋ฆ„๋งŒ์œผ๋กœ ๊ทธ ์†Œํ”„ํŠธ์›จ์–ด์˜ ๊ตฌ์กฐ๋ฅผ ์•Œ ์ˆ˜ ์žˆ๋‹ค.
  • ์ด์ „์˜ ์†Œํ”„ํŠธ์›จ์–ด ๊ฐœ๋ฐœ์—์„œ ์‚ฌ์šฉํ•œ ์„ค๊ณ„๋‚˜ ๊ตฌ์กฐ๋ฅผ ์‰ฝ๊ฒŒ ์ดํ•ดํ•  ์ˆ˜ ์žˆ๊ณ , ์ƒˆ๋กœ์šด ์†Œํ”„ํŠธ์›จ์–ด๋ฅผ ๋น ๋ฅด๊ฒŒ ์ ์šฉํ•  ์ˆ˜ ์žˆ์–ด์„œ ์†Œํ”„ํŠธ์›จ์–ด ์žฌ์‚ฌ์šฉ์ด ์‰ฝ๋‹ค.

๐ŸŸ  ๊ฐ์ฒด ์ง€ํ–ฅ ๋””์ž์ธ์˜ 5๋Œ€ ์›์น™ SOLID

์ข‹์€ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๋ฅผ ์œ„ํ•ด์„œ 5๊ฐ€์ง€ ์›์น™, SOLID๋ฅผ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค. ์ด ์›์น™๋“ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋””์ž์ธ ํŒจํ„ด์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์•Œ์•„๋‘๋Š” ๊ฒƒ์ด ์ข‹์„ ๊ฒƒ์ด๋‹ค.

  • SRP (Single Responsibility Principle, ๋‹จ์ผ ์ฑ…์ž„ ์›์น™)
    • ํ•˜๋‚˜์˜ ํด๋ž˜์Šค๋Š” ํ•˜๋‚˜์˜ ์—ญํ• ๋งŒ ํ•ด์•ผํ•œ๋‹ค.
  • OCP (Open-Close Principle, ๊ฐœ๋ฐฉ ํ์‡„ ์›์น™)
    • ํ™•์žฅ(์ƒ์†)์—๋Š” ์—ด๋ ค์žˆ๊ณ , ์ˆ˜์ •์—๋Š” ๋‹ซํ˜€์žˆ์–ด์•ผ ํ•œ๋‹ค.
  • LSP (Liskov Substitution Prinsicple, ๋ฆฌ์Šค์ฝ”ํ”„ ์น˜ํ™˜ ์›์น™)
    • ์ž์‹์ด ๋ถ€๋ชจ์˜ ์ž๋ฆฌ์— ํ•ญ์ƒ ๊ต์ฒด๋  ์ˆ˜ ์žˆ์–ด์•ผํ•œ๋‹ค.
  • ISP (Interface Segregation Principle, ์ธํ„ฐํŽ˜์ด์Šค ๋ถ„๋ฆฌ ์›์น™)
    • ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ž˜ ๋ถ„๋ฆฌ๋˜์–ด์„œ, ํด๋ž˜์Šค๊ฐ€ ๊ผญ ํ•„์š”ํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ๊ตฌํ˜„ํ•˜๋„๋ก ํ•ด์•ผํ•จ.
  • DIP (Dependency Inversion Property, ์˜์กด์„ฑ ์—ญ์ „ ์›์น™)
    • ์ƒ์œ„ ๋ชจ๋“ˆ์ด ํ•˜์œ„ ๋ชจ๋“ˆ์— ์˜์กดํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
    • ๋‘˜ ๋‹ค ์ถ”์ƒํ™”์— ์˜์กดํ•˜๋ฉฐ, ์ถ”์ƒํ™”๋Š” ์„ธ๋ถ€ ์‚ฌํ•ญ์— ์˜์กดํ•˜๋ฉด ์•ˆ๋œ๋‹ค.
๐Ÿค” ํŒจํ„ด์€ SOLID ์›์น™์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์ข‹๋‹ค๊ณ  ํ•˜๋Š”๋ฐ, 
์–ด๋–ป๊ฒŒ ๋”ฐ๋ผ์•ผ ํ•˜๋Š”๊ฑด์ง€ ์ž์„ธํ•œ ์„ค๋ช…์€ ์ด์Šˆ์— ์ž‘์„ฑํ•  ์˜ˆ์ •์ด๋‹ค.
์ฝ”๋“œ๋ฅผ ํŒจํ„ดํ™” ์‹œํ‚ค๋ฉด์„œ, ๋™์‹œ์— SOLID ์›์น™์— ๋ฌด๋„ˆ์ง€์ง€ ์•Š๋Š” ์ฝ”๋“œ๋ฅผ ์งœ๋Š”๊ฒŒ ์ค‘์š”ํ•  ๊ฒƒ ๊ฐ™๋‹ค.

๐ŸŸ  ๋””์ž์ธ ํŒจํ„ด์˜ ๋ถ„๋ฅ˜

  • ๊ฐœ๋ฐœ์ž๋Š” ์–ด๋–ค ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค๊ณ  ์–ด๋Š ์‹œ์ ์— ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ณ , ์†Œ๋ฉธ์‹œํ‚ฌ์ง€, ๋ฐ์ดํ„ฐ๋ฅผ ์–ด๋–ป๊ฒŒ ๋ฐ›์•„์„œ ์ฒ˜๋ฆฌํ• ์ง€, ๊ตฌ์กฐ์„ค๊ณ„๋ฅผ ์–ด๋ฏ๊ฒŒ ํ•ด์•ผํ• ์ง€ ๊ณ ๋ฏผํ•œ๋‹ค.
  • ๋””์ž์ธํŒจํ„ด ๋ถ„๋ฅ˜๋Š”, ์œ„์™€ ๊ฐ™์ด ์†Œํ”„ํŠธ์›จ์–ด ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•  ๋•Œ ์ž์ฃผ ๋ฐ˜๋ณต๋˜๋Š” ํŠน์ • ์ƒํ™ฉ์—์„œ ์„ค๊ณ„๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•˜๋ฉฐ ์ฝ”๋“œ์˜ ์žฌ์‚ฌ์šฉ์ด ์šฉ์ดํ•˜๋„๋ก ํŒจํ„ด์„ ์ •๋ฆฌํ•ด ๋†“์€ ๊ฒƒ
  • ๊ฐ€์žฅ ์ž˜ ์•Œ๋ ค์ง„ ๋ถ„๋ฅ˜๋ฒ•์œผ๋กœ GoF ํŒจํ„ด ๋ถ„๋ฅ˜ ๋ฐฉ๋ฒ•์ด ์žˆ๋‹ค.
  • GoF ๋ถ„๋ฅ˜ ๋ฐฉ๋ฒ•์€, ๋””์ž์ธ ํŒจํ„ด์„ ๋ชฉ์ ๊ณผ ๋ฒ”์œ„๋กœ ๋ถ„๋ฅ˜ํ–ˆ๋‹ค.

๐Ÿ”ธ ๋ชฉ์ ์— ๋”ฐ๋ฅธ ๋ถ„๋ฅ˜

ํŒจํ„ด์ด ๋ฌด์—‡์ธ์ง€ ์ •์˜ํ•˜๋Š” ๊ฒƒ์œผ๋กœ "์ƒ์„ฑ", "๊ตฌ์กฐ", "ํ–‰์œ„" ์ค‘ ํ•œ ๊ฐ€์ง€์˜ ๋ชฉ์ ์„ ๊ฐ–๋Š”๋‹ค.

1๏ธโƒฃ ์ƒ์„ฑ (Creational Pattern)

- ๊ฐ์ฒด์˜ ์ƒ์„ฑ ๊ณผ์ •์— ๊ด€์—ฌํ•˜๋Š” ํŒจํ„ด์ด๋‹ค.
- ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์ฐธ์กฐ ๊ณผ์ •์„ ์บก์Šํ™” ํ•˜์—ฌ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋˜์–ด๋„ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์กฐ์— ์˜ํ–ฅ์„ ํฌ;๊ฒŒ ๋ฐ›์ง€ ์•Š๋„๋ก ํ•˜์—ฌ ํ”„๋กœ๊ทธ๋žจ์— ์œ ์—ฐ์„ฑ์„ ๋”ํ•ด์ค€๋‹ค.
  • (์˜ˆ์‹œ) DBConnection์„ ๊ด€๋ฆฌํ•˜๋Š” Instance๋ฅผ ํ•˜๋‚˜๋งŒ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋„๋ก ์ œํ•œํ•˜์—ฌ, ๋ถˆํ•„์š”ํ•œ ์—ฐ๊ฒฐ์„ ๋ง‰์Œ. (๊ฐ์ฒด ์ƒ์„ฑ์— ๊ด€์—ฌ!)

2๏ธโƒฃ ๊ตฌ์กฐ (Structural Patternn)

- ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด์˜ ๊ตฌ์„ฑ์„ ํ†ตํ•ด ๋” ํฐ ๊ตฌ์กฐ๋ฅผ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ๊ฒƒ๊ณผ ๊ด€๋ จ๋œ ํŒจํ„ด
- ๊ตฌ์กฐํŒจํ„ด์€ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋„์™€์ค€๋‹ค.
- ์ด 7๊ฐœ์˜ ํŒจํ„ด์ด ์žˆ๋‹ค.
  • (์˜ˆ์‹œ) 2๊ฐœ์˜ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์„œ๋กœ ํ˜ธํ™˜์ด ๋˜์ง€ ์•Š์„ ๋•Œ, ๋‘˜์„ ์—ฐ๊ฒฐํ•ด์ฃผ๊ธฐ ์œ„ํ•ด์„œ ์ƒˆ๋กœ์šด ํด๋ž˜์Šค๋ฅผ ๋งŒ๋“ค์–ด์„œ ์—ฐ๊ฒฐ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํŒจํ„ด.

3๏ธโƒฃ ํ–‰์œ„ ํŒจํ„ด (Behavioral Pattern)

- ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด๋“ค์ด ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‚˜ ์ฑ…์ž„ ๋ถ„๋ฐฐ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋Š” ํŒจํ„ด
- ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ž‘์—…๋“ค์„ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋กœ ๋ถ„๋ฐฐํ•˜๋ฉด์„œ ๊ฒฐํ•ฉ๋„๋ฅผ ์ตœ์†Œํ™” ํ•  ์ˆ˜ ์žˆ๋„๋ก ๋„์™€์ค€๋‹ค.
- ์ด 11๊ฐœ์˜ ํŒจํ„ด์ด ์žˆ๋‹ค.
  • (์˜ˆ์‹œ) ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ๊ตฌํ˜„ํ•ด์•ผํ•˜๋Š” ํ•จ์ˆ˜ ๋ฐ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๋ฏธ๋ฆฌ ์„ ์–ธํ•˜์—ฌ, ์ƒ์†์‹œ ์ด๋ฅผ ํ•„์ˆ˜๋ก ๊ตฌํ˜„ํ•˜๋„๋ก ํ•˜๋Š” ํŒจํ„ด

๐Ÿ”ธ ์ƒ์„ฑ, ๊ตฌ์กฐ, ํ–‰์œ„ ํŒจํ„ด์˜ ์ข…๋ฅ˜

์ƒ์„ฑ ํŒจํ„ด๊ตฌ์กฐ ํŒจํ„ดํ–‰์œ„ ํŒจํ„ด

์ถ”์ƒ ํŒฉํ† ๋ฆฌ (Abstract Factory) ์–ด๋Œ‘ํ„ฐ (Adapter) ์ฑ…์ž„ ์—ฐ์‡„ (Chain of Responsibility)
๋นŒ๋” (Builder) ๋ธŒ๋ฆฌ์ง€ (Bridge) ์ปค๋งจ๋“œ (Command)
ํŒฉํ† ๋ฆฌ ๋ฉ”์†Œ๋“œ (Factory Method) ์ปดํฌ์ง€ํŠธ (Composite) ์ธํ„ฐํ”„๋ฆฌํ„ฐ (Interpretor)
ํ”„๋กœํ† ํƒ€์ž… Prototype) ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ (Decorator) ๋ฏธ๋””์—์ดํ„ฐ (์ค‘์žฌ์ž) (Mediator)
์‹ฑ๊ทธํ†ค (Singleton) ํผ์‹ธ๋“œ (Facade) ๋ฉ”๋ฉ˜ํ†  (Memento)
  ํ”Œ๋ผ์ด์›จ์ดํŠธ (Flyweight) ์˜ต์ €๋ฒ„ (Observer)
  ํ”„๋ก์‹œ (Proxy) ์ƒํƒœ (State)
  โœจMVCโœจ ์ „๋žต (Stretegy)
  โœจMVPโœจ ํ…œํ”Œ๋ฆฟ ๋ฉ”์†Œ๋“œ (Template Method)
  โœจMVVMโœจ ๋น„์ง€ํ„ฐ (๋ฐฉ๋ฌธ์ž) (Visitor)
    ๋ฐ˜๋ณต์ž (Iterator)

๐Ÿค” ๊ฐ๊ฐ์˜ ํŒจํ„ด ๊ฐ„๋‹จํ•˜๊ฒŒ ์•Œ์•„๋ณด๊ธฐ

์ •๋ง ์ •๋ง ๊ฐ„๋‹จํ•˜๊ฒŒ ๊ฐœ๋…๋งŒ ์งš๊ณ  ๋„˜์–ด๊ฐ€๋Š” ๋‹จ๊ณ„์ž…๋‹ˆ๋‹ค. (์•ˆํ• ๋ ค๋‹ค๊ฐ€ ํ•จ!) ๊ฐ๊ฐ ํŒจํ„ด์— ๋Œ€ํ•œ ์ž์„ธํ•œ ์‚ฌํ•ญ์€ ์ถ”ํ›„ ์—…๋กœ๋“œ ๋˜๋Š” ํŒจํ„ด ๊ด€๋ จ ํŒŒ์ผ์„ ๋”ฐ๋กœ ๋ณด์‹œ๋ฉด ์ž์„ธํ•œ ์ดํ•ด๊ฐ€ ๊ฐ€๋Šฅํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ’ฌ ์ƒ์„ฑํŒจํ„ด

์ถ”์ƒ ํŒฉํ† ๋ฆฌ (Abstract Factor)

- ๊ตฌ์ฒด์ ์ธ ํด๋ž˜์Šค์— ์˜์กดํ•˜์ง€ ์•Š๊ณ , ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด ์„œ๋กœ ์—ฐ๊ด€,
   ์˜์กดํ•˜๋Š” ๊ฐ์ฒด๋“ค์˜ ๊ทธ๋ฃน์œผ๋กœ ์ƒ์„ฑํ•˜์—ฌ ์ถ”์ƒ์ ์œผ๋กœ ํ‘œํ˜„ํ•œ๋‹ค.
- ์—ฐ๊ด€ ์„œ๋ธŒ ํด๋ž˜์Šค๋ฅผ ๋ฌถ์–ด ํ•œ ๋ฒˆ์— ๊ต์ฒดํ•˜๋Š” ๊ฒƒ์ด ๊ฐ€๋Šฅํ•˜๋‹ค.

๋นŒ๋” (Builder)

- ์ž‘๊ฒŒ ๋ถ„๋ฆฌ๋œ ์ธ์Šคํ„ด์Šค๋ฅผ ๊ฑด์ถ•ํ•˜๋“ฏ์ด ์กฐํ•ฉํ•˜์—ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•œ๋‹ค.
- ๊ฐ์ฒด์˜ ์ƒ์„ฑ ๊ณผ์ •๊ณผ ํ‘œํ˜„ ๋ฐฉ๋ฒ•์„ ๋ถ„๋ฆฌํ•˜๊ณ  ์žˆ์–ด, ๋™์ผํ•œ ๊ฐ์ฒด ์ƒ์„ฑ์—์„œ๋„ ์„œ๋กœ ๋‹ค๋ฅธ ๊ฒฐ๊ณผ๋ฅผ ๋งŒ๋“ค์–ด๋‚ผ ์ˆ˜ ์žˆ๋‹ค.

ํ…ํ† ๋ฆฌ ๋ฉ”์„œ๋“œ (Factory Method)

- ๊ฐ์ฒด ์ƒ์„ฑ์„ ์„œ๋ธŒ ํด๋ž˜์Šค์—์„œ ์ฒ˜๋ฆฌํ•˜๋„๋ก ๋ถ„๋ฆฌํ•˜์—ฌ ์บก์Šํ™”ํ•œ ํŒจํ„ด์ด๋‹ค.
- ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์ธํ„ฐํŽ˜์ด์Šค๋งŒ ์ •์˜ํ•˜๊ณ  ์‹ค์ œ ์ƒใ……๊ฒ…์€ ์„œ๋ธŒํด๋ž˜์Šค๊ฐ€ ๋‹ด๋‹นํ•œ๋‹ค.
- ๊ฐ€์ƒ ์ƒ์„ฑ์ž (Virtual Constructor) ํŒจํ„ด์ด๋ผ๊ณ ๋„ ํ•œ๋‹ค.

ํ”„๋กœํ† ํƒ€์ž… (Prototype)

- ์›๋ณธ ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•˜๋Š” ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋Š” ํŒจํ„ด์ด๋‹ค.
- ์ผ๋ฐ™๋•์ธ ๋ฐฉ๋ฒ•์œผ๋กœ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉฐ, ๋น„์šฉ์ด ํฐ ๊ฒฝ์šฐ ์ฃผ๋กœ ์ด์šฉํ•œ๋‹ค.

์‹ฑ๊ธ€ํ†ค (Singleton)

- ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๋ฉด ์ƒ์„ฑ๋œ ๊ฐ์ฒด๋ฅผ ์–ด๋””์„œ๋“  ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ์ง€๋งŒ, ์—ฌ๋Ÿฌ ํ”„๋กœ์„ธ์Šค๊ฐ€ ๋™์‹œ์— ์ฐธ์กฐํ•  ์ˆ˜๋Š” ์—†๋‹ค.
- ํด๋ž˜์Šค ๋‚ด์—์„œ ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•˜๋‚˜ ๋ฟ์ž„์„ ๋ณด์žฅํ•˜๋ฉฐ, ๋ถˆํ•–์š”ํ•œ ๋ฉ”๋ชจ๋ฆฌ ๋‚ญ๋น„๋ฅผ ์ตœ์†Œํ™”ํ•  ์ˆ˜ ์žˆ๋‹ค.

๐Ÿ’ฌ ๊ตฌ์กฐํŒจํ„ด

MVC, MVVM, MVP ๋Š” iOS์—์„œ ๊ฐ€์žฅ ๋Œ€ํ‘œ์ ์œผ๋กœ ์‚ฌ์šฉํ•˜๋Š” '๊ตฌ์กฐํŒจํ„ด'์ด๋‹ค.

โœจMVCโœจ

- Model: ์•ฑ์˜ ๋น„์ฆˆ๋‹ˆ์Šค ๋กœ์ง์ด๋‚˜ ๋ฐ์ดํ„ฐ๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์ฝ”๋“œ
- View: ์‚ฌ์šฉ์ž์—๊ฒŒ ๋ณด์—ฌ์ง€๋Š” ์ง‘๋‹จ
- Controller: Model๊ณผ View ์‚ฌ์ด์˜ ์ค‘๊ฐ„์ž ์—ญํ• 
โœ… iOS๋Š” ์ฃผ๋กœ ViewController๋กœ View + Controller๋กœ ์‚ฌ์šฉ

<๐Ÿค”๋‹จ์ >
- View์™€ Controller๊ฐ„์˜ ์˜์กด์„ฑ์ด ๋†’์•„์ง์— ๋”ฐ๋ผ ์žฌ์‚ฌ์šฉ์„ฑ์ด ๋‚ฎ์•„์ง€๊ฒŒ ๋œ๋‹ค. -> ๊ทธ๋ž˜์„œ MVP ๋“ฑ์žฅ

โœจMVPโœจ

Controller๋ฅผ ๋Œ€์‹ ํ•ด present๋ผ๋Š” ๊ฐœ๋…์œผ๋กœ ๋ฐ”๋€Œ์—ˆ๋‹ค.
ํ•˜์ง€๋งŒ ์ด ์—ญ์‹œ view - present์˜ ๊ด€๊ณ„๊ฐ€ 1:1 ์ด๋ผ๋Š” ์˜์กด์„ฑ ๋ฌธ์ œ๊ฐ€ ์ƒ๊ฒจ ๋‚ฎ์€ ์žฌ์‚ฌ์šฉ์„ฑ์„ ๊ฐ–๋Š”๋‹ค๋Š” ๋‹จ์ ์ด ์žˆ๋‹ค.

โœจMVVMโœจ

- ์ด๋ฒคํŠธ์˜ ํ๋ฆ„์ด ๋‹จ๋ฐฉํ–ฅ์ด๋‹ค.
- ์‚ฌ์šฉ์ž์˜ ์ด๋ฒคํŠธ๋ฅผ view๊ฐ€ viewmodel๋กœ ์ „๋‹ฌํ•˜๊ณ , model์—๊ฒŒ ์ˆ˜์ •์‚ฌํ•ญ์„ ํ† ์Šคํ•˜๋Š” ์‹์œผ๋กœ ์ง„ํ–‰
- command pattern(ํ–‰์œ„ํŒจํ„ด!!)๊ณผ data binding์„ ์ด์šฉํ•˜์—ฌ view์™€ viewmodel ์‚ฌ์ด์˜ ์˜์กด์„ฑ์„ ์ œ๊ฑฐํ•œ๋‹ค.

* data binding: viewmodel ์—์„œ ์ผ์–ด๋‚˜๋Š” ์ผ์„ view๊ฐ€ observingํ•˜๊ณ  ์žˆ์Œ.
๊ทธ๋ฆฌ๊ณ  ๊ด€์ฐฐํ•˜๊ณ  ์žˆ๋˜ viewmodel์ด ๋ณ€๊ฒฝ๋˜๋ฉด ์ž์‹ ์ด ๋ณด์—ฌ์ฃผ๊ณ  ์žˆ๋Š” view์— ๋ณ€๊ฒฝ ์‚ฌํ•ญ์„ ์•Œ๋ฆฌ๋ฉฐ ๋ฐ”๊ฟ”์„œ ๋ณด์—ฌ์คŒ

์–ด๋Œ‘ํ„ฐ (Adpator)

- ํ˜ธํ™˜์„ฑ์ด ์—†๋Š” ํด๋ž˜์Šค๋“ค์˜ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ, ๋‹ค๋ฅธ ํด๋ž˜์Šค๊ฐ€ ์ด์šฉํ•  ์ˆ˜ ์žˆ๋˜๋ก ๋ณ€ํ™˜ํ•ด์ฃผ๋Š” ํŒจํ„ด
- ๊ธฐ์กด์˜ ํด๋ž˜์Šค๋ฅผ ์ด์šฉํ•˜๊ณ  ์‹ถ์ง€๋งŒ ์ธํ„ฐํŽ˜์ด์Šค๊ฐ€ ์ผ์น˜ํ•˜์ง€ ์•Š์„ ๋•Œ ์ด์šฉํ•œ๋‹ค.

๋ธŒ๋ฆฌ์ง€ (Bridge)

- ๊ตฌํ˜„๋ถ€์—์„œ ์ถ”์ƒ์ธต์„ ๋ถ„๋ฆฌํ•˜์—ฌ, ์„œ๋กœ๊ฐ€ ๋…๋ฆฝ์ ์œผ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋„๋ก ๊ตฌ์„ฑํ•œ ํŒจํ„ด์ด๋‹ค.
- ๊ธฐ๋Šฅ๊ณผ ๊ตฌํ˜„์„ ๋‘ ๊ฐœ์˜ ๋ณ„๋„ ํด๋ž˜์Šค๋กœ ๊ตฌํ˜„ํ•œ๋‹ค.

์ปดํฌ์ง€ํŠธ (Composite)

- ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ๊ฐ€์ง„ ๋ณตํ•ฉ ๊ฐ์ฒด์™€ ๋‹จ์ผ ๊ฐ์ฒด๋ฅผ ๊ตฌ๋ถ„์—†์ด ๋‹ค๋ฃจ๊ณ ์ž ํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด์ด๋‹ค.
- ๊ฐ์ฒด๋“ค์„ ํŠธ๋ฆฌ ๊ตฌ์กฐ๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ๋””๋ ‰ํ„ฐ๋ฆฌ ์•ˆ์— ๋””๋ž™ํ„ฐ๋ฆฌ๊ฐ€ ์žˆ๋“ฏ์ด,
  ๋ณตํ•ฉ ๊ฐ์ฒด ์•ˆ์— ๋ณตํ•ฉ ๊ฐ์ฒด๊ฐ€ ํฌํ•จ๋˜๋Š” ๊ตฌ์กฐ๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ๋‹ค.

๋ฐ์ฝ”๋ ˆ์ดํ„ฐ (Decorator)

- ๊ฐ์ฒด ๊ฐ„์˜ ๊ฒฐํ•ฉ์„ ํ†ตํ•ด ๋Šฅ๋™์ ์œผ๋กœ ๊ธฐ๋Šฅ๋“ค์„ ํ™•์žฅํ•  ์ˆ˜ ์žˆ๋Š” ํŒจํ„ด
- ์ž„์˜์˜ ๊ฐ์ฒด์— ๋ถ€๊ฐ€์ ์ธ ๊ธฐ๋Šฅ์„ ์ถ”๊ฐ€ํ•˜๊ธฐ ์œ„ํ•ด ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์„ ๋ง๋ถ™์ด๋Š” ๋ฐฉ์‹์œผ๋กœ ๊ตฌํ˜„

ํผ์‹ธ๋“œ (Facade)

- ๋ณต์žกํ•œ ์„œ๋ธŒ ํด๋ž˜์Šค๋“ค์„ ํ”ผํ•ด ๋” ์ƒ์œ„์— ์ธํ„ฐํŽ˜์ด์Šค๋“ค์„ ๊ตฌ์„ฑํ•จ์œผ๋กœ์จ ์„œ๋ธŒ ํด๋ž˜์Šค๋“ค์˜ ๊ธฐ๋Šฅ์„ ๊ฐ„ํŽธํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•˜๋Š” ํŒจํ„ด
- ์„œ๋ธŒ ํด๋ž˜์Šค๋“ค ์‚ฌ์ด์˜ ํ†ตํ•ฉ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์ œ๊ณตํ•˜๋Š” Wrapper ๊ฐ์ฒด๊ฐ€ ํ•„์š”ํ•˜๋‹ค

ํ”Œ๋ผ์ด์›จ์ดํŠธ (Flyweight)

- ์ธ์Šคํ„ด์Šค๊ฐ€ ํ•„์š”ํ•  ๋•Œ๋งˆ๋‹ค ๋งค๋ฒˆ ์ƒ์„ฑํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹ˆ๊ณ , ๊ฐ€๋Šฅํ•œ ํ•œ ๊ณต์œ ํ•ด์„œ ์‚ฌ์šฉํ•จ์œผ๋กœ์จ ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ ˆ์•ฝํ•˜๋Š” ํ”ผํ„ด
- ๋‹ค์ˆ˜์˜ ์œ ์‚ฌ ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•˜๊ฑฐ๋‚˜ ์กฐ์ž‘ํ•  ๋•Œ ์œ ์šฉํ•˜๊ฒŒ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์Œ

ํ”„๋ก์‹œ (Proxy)

- ์ ‘๊ทผ์ด ์–ด๋ ค์šด ๊ฐ์ฒด์™€ ์—ฌ๊ธฐ์— ์—ฐ๊ฒฐํ•˜๋ ค๋Š” ๊ฐ์ฒด ์‚ฌ์ด์—์„œ ์ธํ„ฐํŽ˜์ด์Šค ์—ญํ• ์„ ์ˆ˜ํ–‰ํ•˜๋Š” ํŒจํ„ด
- ๋„คํŠธ์›Œํฌ ์—ฐ๊ฒฐ, ๋ฉ”๋ชจ๋ฆฌ์˜ ๋Œ€์šฉ๋Ÿ‰ ๊ฐ์ฒด๋กœ์˜ ์ ‘๊ทผ ๋“ฑ์— ์ฃผ๋กœ 

๐Ÿ’ฌ ํ–‰์œ„ ํŒจํ„ด

์ฑ…์ž„ ์—ฐ์‡„ (Chain of Responsibility)

- ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ์ฒด๊ฐ€ ๋‘˜ ์ด์ƒ ์กด์žฌํ•˜์—ฌ ํ•œ ๊ฐ์ฒด๊ฐ€ ์ฒ˜๋ฆฌ๋˜์ง€ ๋ชปํ•˜๋ฉด ๋‹ค์Œ ๊ฐ์ฒด๋กœ ๋„˜์–ด๊ฐ€๋Š” ํ˜•ํƒœ์˜ ํŒจํ„ด
- ์š”์ฒญ์„ ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋Š” ๊ฐ ๊ฐ์ฒด๋“ค์ด chain์œผ๋กœ ๋ฌถ์—ฌ ์žˆ์–ด ์š”์ฒญ์ด ํ•ด๊ฒฐ๋  ๋•Œ๊นŒ์ง€ chain์„ ๋”ฐ๋ผ ์ฑ…์ž„์ด ๋„˜์–ด๊ฐ„๋‹ค.

์ปค๋งจ๋“œ (Command)

- ์š”์ฒญ์„ ๊ฐ์ฒด์˜ ํ˜•ํƒœ๋กœ ์บก์Šํ™”ํ•˜์—ฌ ์žฌ์ด์šฉํ•˜๊ฑฐ๋‚˜ ์ตœ์†Œํ•  ์ˆ˜ ์žˆ๋„๋ก ์š”์ฒญ์— ํ•„์š”ํ•œ ์ •๋ณด๋ฅผ ์ €์žฅํ•˜๊ฑฐ๋‚˜ ๋กœ๊ทธ์— ๋‚จ๊ธฐ๋Š” ํŒจํ„ด
- ์š”์ฒญ์— ์‚ฌ์šฉ๋˜๋Š” ๊ฐ์ข… ๋ช…๋ น์–ด๋“ค์„ ์ถ”์ƒ ํด๋ž˜์Šค์™€ ๊ตฌ์ฒด ํด๋ž˜์Šค๋กœ ๋ถ„๋ฆฌํ•˜์—ฌ ๋‹จ์ˆœํ™”ํ•œ๋‹ค.

์ธํ„ฐํ”„๋ฆฌํ„ฐ (Interpreter)

- ์–ธ์–ด์— ๋ฌธ๋ฒ• ํ‘œํ˜„์„ ์ •์˜ํ•˜๋Š” ํŒจํ„ด
- SQL์ด๋‚˜ ํ†ต์‹  ํ”„๋กœํ† ์ฝœ๊ณผ ๊ฐ™์€ ๊ฒƒ์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์‚ฌ์šฉํ•œ๋‹ค.

๋ฐ˜๋ณต์ž (Iterator)

- ์ž๋ฃŒ๊ตฌ์กฐ์™€ ๊ฐ™์ด ์ ‘๊ทผ์ด ์žฆ์€ ๊ฐ์ฒด์— ๋Œ€ํ•ด ๋™์ผํ•œ ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ์‚ฌ์šฉํ•˜๋„๋ก ํ•˜๋Š” ํŒจํ„ด
- ๋‚ด๋ถ€ ํ‘œํ˜„ ๋ฐฉ๋ฒ•์˜ ๋…ธ์ถœ ์—†์ด ์ˆœ์ฐจ์ ์ธ ์ ‘๊ทผ์ด ๊ฐ€๋Šฅ 

์ค‘์žฌ์ž (Mediator)

- ์ˆ˜๋งŽ์€ ๊ฐ์ฒด๋“ค ๊ฐ„์˜ ๋ณต์žกํ•œ ์ƒํ˜ธ์ž‘์šฉ์„ ์บก์Šํ™”ํ•˜์—ฌ ๊ฐ์ฒด๋กœ ์ •์˜ํ•˜๋Š” ํŒจํ„ด
- ๊ฐ์ฒด ์‚ฌ์ด์˜ ์˜์กด์„ฑ์„ ์ค„์—ฌ ๊ฒฐํ•ฉ๋„๋ฅผ ๊ฐ์†Œ์‹œํ‚ฌ ์ˆ˜ ์žˆ์Œ
- ์ค‘์žฌ์ž๋Š” ๊ฐ์ฒด ๊ฐ„์˜ ํ†ต์ œ์™€ ์ง€์‹œ์˜ ์—ญํ• ์„ ์ˆ˜ํ–‰

๋ฉ”๋ฉ˜ํ†  (Memento)

- ํŠน์ • ์‹œ์ ์—์„œ์˜ ๊ฐ์ฒด ๋‚ด๋ถ€ ์ƒํƒœ๋ฅผ ๊ฐ์ฒดํ™”ํ•จ์œผ๋กœ์จ ์ดํ›„ ์š”์ฒญ์— ๋”ฐ๋ผ ๊ฐ์ฒด๋ฅผ ํ•ด๋‹น ์‹œ์ ์˜ ์ƒํƒœ๋กœ ๋Œ๋ฆด ์ˆ˜ ์žˆ๋Š” ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ํŒจํ„ด
- Cmd+Z ๊ฐ™์€ ๋˜๋Œ๋ฆฌ๊ธฐ ๊ธฐ๋Šฅ์„ ๊ฐœ๋ฐœํ•  ๋•Œ ์ฃผ๋กœ ์ด์šฉํ•จ

์˜ต์ €๋ฒ„ (Observer)

- ํ•œ ๊ฐ์ฒด์˜ ์ƒํƒœ๊ฐ€ ๋ณ€ํ™”ํ•˜๋ฉด ๊ฐ์ฒด์— ์ƒ์†๋˜์–ด ์žˆ๋Š” ๋‹ค๋ฅธ ๊ฐ์ฒด๋“ค์—๊ฒŒ ๋ณ€ํ™”๋œ ์ƒํƒœ๋ฅผ ์ „๋‹ฌํ•˜๋Š” ํŒจํ„ด
- ์ฃผ๋กœ ๋ถ„์‚ฐ๋œ ์‹œ์Šคํ…œ ๊ฐ„์— ์ด๋ฒคํŠธ๋ฅผ ์ƒ์„ฑ, ๋ฐœํ–‰ํ•˜๊ณ  ์ด๋ฅผ ์ˆ˜์‹ ํ•ด์•ผํ•  ๋•Œ ์ด์šฉ

์ƒํƒœ (State)

- ๊ฐ์ฒด์˜ ์ƒํƒœ์— ๋”ฐ๋ผ ๋™์ผํ•œ ๋™ใ…Š์ž‘์„ ๋‹ค๋ฅด๊ฒŒ ์ฒ˜๋ฆฌํ•ด์•ผํ•  ๋•Œ ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด
- ๊ฐ์ฒด ์ƒํƒœ๋ฅผ ์บก์Šํ™”ํ•˜๊ณ  ์ด๋ฅผ ์ฐธ์กฐํ•˜๋Š” ๋ฐฉ์‹์œผ๋กœ ์ฒ˜๋ฆฌ

์ „๋žต (Stretgy)

- ๋™์ผํ•œ ๊ณ„์—ด์˜ ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ๊ฐœ๋ณ„์ ์œผ๋กœ ์บก์Šํ™”ํ•˜์—ฌ ์ƒํ˜ธ ๊ตํ™˜ํ•  ์ˆ˜ ์žˆ๊ฒŒ ์ •์˜ํ•˜๋Š” ํŒจํ„ด
- ํด๋ผ์ด์–ธํŠธ๋Š” ๋…๋ฆฝ์ ์œผ๋กœ ์›ํ•˜๋Š” ์•Œ๊ณ ๋ฆฌ์ฆ˜์„ ์„ ํƒํ•˜์—ฌ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ์œผ๋ฉฐ, ํด๋ผ์ด์–ธํŠธ์— ์˜ํ–ฅ์—†์ด ์•Œ๊ณ ๋ฆฌ์ฆ˜์˜ ๋ณ€๊ฒฝ์ด ๊ฐ€๋Šฅํ•˜๋‹ค

ํƒฌํ”Œ๋ฆฟ ๋ฉ”์„œ๋“œ (Template Method)

- ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ๊ณจ๊ฒฉ์„ ์ •์˜ํ•˜๊ณ , ํ•˜์œ„ ํด๋ž˜์Šค์—์„œ ์„ธ๋ถ€ ์ฒ˜๋ฆฌ๋ฅผ ๊ตฌ์ฒดํ™”ํ•˜๋Š” ๊ตฌ์กฐ์˜ ํŒจํ„ด
- ์œ ์‚ฌํ•œ ์„œ๋ธŒ ํด๋ž˜์Šค๋ฅผ ๋ฌถ์–ด ๊ณตํ†ต๋œ ๋‚ด์šฉ์„ ์ƒ์œ„ ํด๋ž˜์Šค์—์„œ ์ •์˜ํ•จ์œผ๋กœ์จ ์ฝ”๋“œ์˜ ์–‘์„ ์ค„์ด๊ณ  ์œ ์ง€๋ณด์ˆ˜๋ฅผ ์šฉ์ดํ•˜๊ฒŒ ํ•œ๋‹ค.

๋ฐฉ๋ฌธ์ž (Visitor)

- ๊ฐ ํด๋ž˜์Šค๋“ค์˜ ๋ฐ์ดํ„ฐ ๊ตฌ์กฐ์—์„œ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์„ ๋ถ„๋ฆฌํ•˜์—ฌ ๋ณ„๋„์˜ ํด๋ž˜์Šค๋กœ ๊ตฌ์„ฑํ•˜๋Š” ํŒจํ„ด
- ๋ถ„๋ฆฌ๋œ ์ฒ˜๋ฆฌ ๊ธฐ๋Šฅ์€ ๊ฐ ํด๋ž˜์Šค๋ฅผ ๋ฐฉ๋ฌธ(visit) ํ•˜์—ฌ 

 

 


๐Ÿ“– Reference

https://woovictory.github.io/2019/05/10/What-is-SOLID/

 

[๊ฐœ๋ฐœ์ƒ์‹]๊ฐ์ฒด ์ง€ํ–ฅ ๋””์ž์ธ์˜ 5๋Œ€ ์›์น™

์ข‹์€ ๊ฐ์ฒด์ง€ํ–ฅ ์„ค๊ณ„๋ฅผ ์œ„ํ•ด์„œ ๋‹ค์Œ์˜ 5๊ฐ€์ง€ ์›์น™์„ ๋”ฐ๋ฅด๋Š” ๊ฒƒ์ด ์ข‹๊ณ , ์ด ์›์น™๋“ค์„ ๊ธฐ๋ฐ˜์œผ๋กœ ๋””์ž์ธ ํŒจํ„ด์ด ๋˜๊ธฐ ๋•Œ๋ฌธ์— ์•Œ์•„๋‘๋ฉด ํ™•์‹คํ•˜๊ฒŒ ๋„์›€์ด ๋œ๋‹ค. ๊ฐ์ฒด์ง€ํ–ฅ์˜ 5๋Œ€ ์›์น™์˜ ์•ž๊ธ€์ž๋ฅผ ๋”ฐ์„œ S

woovictory.github.io

https://velog.io/@myeongs07/iOS-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%98%EB%B0%8D-%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4%EC%9D%B4%EB%9E%80

 

[iOS] ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋””์ž์ธ ํŒจํ„ด์ด๋ž€?

ํ”„๋กœ๊ทธ๋ž˜๋ฐ ๋””์ž์ธ ํŒจํ„ด์˜ ์ข…๋ฅ˜์™€ ์žฅ๋‹จ์ 

velog.io

https://github.com/gyoogle/tech-interview-for-developer/blob/master/Design%20Pattern/%5BDesign%20Pattern%5D%20Overview.md

 

GitHub - gyoogle/tech-interview-for-developer: ๐Ÿ‘ถ๐Ÿป ์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ „๊ณต ์ง€์‹ & ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋ฐฑ๊ณผ์‚ฌ์ „ ๐Ÿ“–

๐Ÿ‘ถ๐Ÿป ์‹ ์ž… ๊ฐœ๋ฐœ์ž ์ „๊ณต ์ง€์‹ & ๊ธฐ์ˆ  ๋ฉด์ ‘ ๋ฐฑ๊ณผ์‚ฌ์ „ ๐Ÿ“–. Contribute to gyoogle/tech-interview-for-developer development by creating an account on GitHub.

github.com

https://velog.io/@ragnarok_code/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%EC%83%9D%EC%84%B1-%ED%8C%A8%ED%84%B4

 

๋””์ž์ธ ํŒจํ„ด - ์ƒ์„ฑ ํŒจํ„ด

์ƒ์„ฑ ํŒจํ„ด์€ ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ๊ด€๋ จ๋œ ํŒจํ„ด์œผ๋กœ ์ด 5๊ฐœ์˜ ํŒจํ„ด์ด ์žˆ๋‹ค.์ƒ์„ฑ ํŒจํ„ด์€ ๊ฐ์ฒด์˜ ์ƒ์„ฑ๊ณผ ์ฐธ์กฐ ๊ณผ์ •์„ ์บก์Šํ™” ํ•˜์—ฌ ๊ฐ์ฒด๊ฐ€ ์ƒ์„ฑ๋˜๊ฑฐ๋‚˜ ๋ณ€๊ฒฝ๋˜์–ด๋„ ํ”„๋กœ๊ทธ๋žจ์˜ ๊ตฌ์กฐ์— ์˜ํ–ฅ์„ ํฌ๊ฒŒ ๋ฐ›์ง€ ์•Š

velog.io

https://velog.io/@ragnarok_code/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%ED%96%89%EC%9C%84-%ED%8C%A8%ED%84%B4

 

๋””์ž์ธ ํŒจํ„ด - ํ–‰์œ„ ํŒจํ„ด

ํ–‰์œ„ ํŒจํ„ด์€ ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด๋“ค์ด ์„œ๋กœ ์ƒํ˜ธ์ž‘์šฉํ•˜๋Š” ๋ฐฉ๋ฒ•์ด๋‚˜ ์ฑ…์ž„ ๋ถ„๋ฐฐ ๋ฐฉ๋ฒ•์„ ์ •์˜ํ•˜๋Š” ํŒจํ„ด์œผ๋กœ ์ด 11๊ฐœ์˜ ํŒจํ„ด์ด ์žˆ๋‹ค.ํ–‰์œ„ ํŒจํ„ด์€ ํ•˜๋‚˜์˜ ๊ฐ์ฒด๋กœ ์ˆ˜ํ–‰ํ•  ์ˆ˜ ์—†๋Š” ์ž‘์—…์„ ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋กœ ๋ถ„๋ฐฐํ•˜

velog.io

https://velog.io/@ragnarok_code/%EB%94%94%EC%9E%90%EC%9D%B8-%ED%8C%A8%ED%84%B4-%EA%B5%AC%EC%A1%B0-%ED%8C%A8%ED%84%B4

 

๋””์ž์ธ ํŒจํ„ด - ๊ตฌ์กฐ ํŒจํ„ด

๊ตฌ์กฐ ํŒจํ„ด์€ ํด๋ž˜์Šค๋‚˜ ๊ฐ์ฒด๋“ค์„ ์กฐํ•ฉํ•˜์—ฌ ๋” ํฐ ๊ตฌ์กฐ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๊ฒŒ ํ•ด์ฃผ๋Š” ํŒจํ„ด์œผ๋กœ ์ด 7๊ฐœ์˜ ํŒจํ„ด์ด ์žˆ๋‹ค.๊ตฌ์กฐ ํŒจํ„ด์€ ๊ตฌ์กฐ๊ฐ€ ๋ณต์žกํ•œ ์‹œ์Šคํ…œ์„ ๊ฐœ๋ฐœํ•˜๊ธฐ ์‰ฝ๊ฒŒ ๋„์™€์ค€๋‹ค.ํ˜ธํ™˜์„ฑ์ด ์—†๋Š” ํด๋ž˜์Šค

velog.io

 

๋ฐ˜์‘ํ˜•