λ³Έλ¬Έ λ°”λ‘œκ°€κΈ°
iOS 🍎/iOS

Design Pattern

by yongmin.Lee 2021. 2. 16.

λ””μžμΈνŒ¨ν„΄?

- ν”„λ‘œκ·Έλž˜λ° λ””μžμΈ νŒ¨ν„΄μ€ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ„€κ³„ν•  λ•Œ νŠΉμ • μƒν™©μ—μ„œ μžμ£Ό μ‚¬μš©ν•˜λŠ” νŒ¨ν„΄μ„ μ •ν˜•ν™”ν•œ κ²ƒ

- 쒋은 μ†Œν”„νŠΈμ›¨μ–΄ μ„€κ³„λ₯Ό μœ„ν•œ κ°œλ°œμžλ“€μ˜ κ²½ν—˜μ  μ‚°λ¬Ό

λ””μžμΈνŒ¨ν„΄ λΆ„λ₯˜

- λ””μžμΈ νŒ¨ν„΄ λΆ„λ₯˜λŠ” μ†Œν”„νŠΈμ›¨μ–΄ μ½”λ“œλ₯Ό μž‘μ„±ν•  λ•Œ μžμ£Ό λ°˜λ³΅λ˜λŠ” νŠΉμ • μƒν™©μ—μ„œ μ„€κ³„λ₯Ό μš©μ΄ν•˜κ²Œ ν•˜λ©° μ½”λ“œμ˜ μž¬μ‚¬μš©μ΄ μš©μ΄ν•˜λ„둝 νŒ¨ν„΄μ„ μ •λ¦¬ν•΄ λ†“은 κ²ƒ

- λΆ„λ₯˜κΈ°μ€€ : λͺ©μ , λ²”μœ„

- λͺ©μ  : νŒ¨ν„΄μ΄ λ¬΄μ—‡μ„ ν•˜λŠ”지 μ •μ˜ν•˜λŠ” κ²ƒμœΌλ‘œ "생성", "ꡬ쑰", "ν–‰μœ„" μ€‘μ˜ ν•œ κ°€μ§€ λͺ©μ μ„ κ°–μŠ΅λ‹ˆλ‹€.

생성 (Creational Pattern) : 객체의 μƒμ„± κ³Όμ •μ— κ΄€μ—¬ν•˜λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€.

ꡬ쑰 (Structural Pattern) : ν΄λž˜μŠ€λ‚˜ κ°μ²΄μ˜ κ΅¬μ„±μ„ ν†΅ν•΄ λ” ν° κ΅¬μ‘°λ‘œ λ§Œλ“€ μˆ˜ μžˆκ²Œ ν•΄μ£ΌλŠ” κ²ƒκ³Ό κ΄€λ ¨λœ νŒ¨ν„΄μž…λ‹ˆλ‹€.

ν–‰μœ„ (Behavioral Pattern) : νŒ¨ν„΄μ„ μ£Όλ‘œ ν΄λž˜μŠ€μ— μ μš©ν•˜λŠ”지 μ•„λ‹ˆλ©΄ κ°μ²΄μ— μ μš©ν•˜λŠ”지에 λ”°λΌ κ΅¬λΆ„λ˜λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€.=

- λ²”μœ„ : νŒ¨ν„΄μ„ ν΄λž˜μŠ€μ— μ μš©ν•˜λŠ”지 μ•„λ‹ˆλ©΄ κ°μ²΄μ— μ μš©ν•˜λŠ”지에 λ”°λΌ κ΅¬λΆ„λ˜λŠ” νŒ¨ν„΄

클래슀 νŒ¨ν„΄ (Class Pattern) : ν΄λž˜μŠ€λ“€κ³Ό ν•˜μœ„ ν΄λž˜μŠ€ κ°„μ˜ κ΄€κ³„λ₯Ό λ‹€λ£¨λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€. μ»΄νŒŒμΌ μ‹œμ— κ΄€κ³„κ°€ κ²°μ •λ©λ‹ˆλ‹€.

객체 νŒ¨ν„΄ (Object Patterns) : 객체 κ°„μ˜ κ΄€κ³„λ₯Ό λ‹€λ£¨λ©° λ³΄ν†΅ κ΅¬μ„±μ„ ν†΅ν•΄ μ •μ˜λ©λ‹ˆλ‹€. κ°μ²΄ νŒ¨ν„΄μ€ μΌλ°˜μ μœΌλ‘œ μ‹€ν–‰μ‹œκ°„에 κ΄€κ³„κ°€ μƒμ„±λ˜κΈ° λ•Œλ¬Έμ— λ” λ™μ μ΄λ©΄μ„œ μœ μ—°ν•©λ‹ˆλ‹€.

μ‹±κΈ€ν„΄ νŒ¨ν„΄ (Singleton Pattern)

λͺ©μ  : μƒμ„±
λ²”μœ„ : κ°μ²΄
객체의 μƒμ„±μ— κ΄€λ ¨λœ νŒ¨ν„΄μœΌλ‘œμ„œ νŠΉμ • ν΄λž˜μŠ€μ˜ μΈμŠ€ν„΄μŠ€κ°€ μ˜€μ§ ν•˜λ‚˜μž„을 λ³΄μž₯ν•˜κ³  μ΄ μΈμŠ€ν„΄μŠ€μ— μ ‘κ·Όν•  λ°©λ²•μ„ μ œκ³΅ν•©λ‹ˆλ‹€.

μ˜΅μ €λ²„ νŒ¨ν„΄ (Observer Pattern)

λͺ©μ  : ν–‰μœ„
λ²”μœ„ : κ°μ²΄
객체의 μƒνƒœλ³€ν™”λ₯Ό κ΄€μ°°ν•˜λŠ” κ΄€μ°°μžλ“€, μ¦‰ μ˜΅μ €λ²„λ“€μ˜ λͺ©λ‘μ„ κ°μ²΄μ— λ“±λ‘ν•˜μ—¬ μƒνƒœ λ³€ν™”κ°€ μžˆμ„ λ•Œλ§ˆλ‹€ λ©”μ„œλ“œ λ“±μ„ ν†΅ν•΄ κ°μ²΄κ°€ μ§μ ‘ λͺ©λ‘μ˜ κ° μ˜΅μ €λ²„μ—κ²Œ ν†΅μ§€ν•˜λ„둝 ν•˜λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€.

νŒ©ν† λ¦¬ νŒ¨ν„΄ (Factory Pattern)

λͺ©μ  : μƒμ„±
λ²”μœ„ : ν΄λž˜μŠ€
객체λ₯Ό μƒμ„±ν•˜κΈ° μœ„ν•œ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ •μ˜ν•˜μ§€λ§Œ μ–΄λ–€ ν΄λž˜μŠ€μ˜ μΈμŠ€ν„΄μŠ€λ₯Ό μƒμ„±ν• μ§€μ— λŒ€ν•œ κ²°μ •μ€ ν•˜μœ„ ν΄λž˜μŠ€μ—μ„œ μ΄λ£¨μ–΄μ§€λ„둝 μΈμŠ€ν„΄μŠ€ μƒμ„±μ˜ μ±…μž„μ„ λ– λ„˜κΈ°λŠ” νŒ¨ν„΄μž…λ‹ˆλ‹€.

 

 

'iOS 🍎 > iOS' μΉ΄ν…Œκ³ λ¦¬μ˜ λ‹€λ₯Έ κΈ€

MVC, MVP, MVVM Pattern  (0) 2021.02.17
Delegation Pattern  (0) 2021.02.17
View hierarchy  (0) 2021.02.16
AutoLayout  (0) 2021.02.16
Cocoa Touch  (0) 2021.02.16