/iOS_DesignPattern

πŸš› [iOS] Raywenderlich λ””μžμΈ νŒ¨ν„΄

Primary LanguageSwift

iOS_DesignPattern

DesignPattern κ΄€λ ¨ 이둠 정리 및 μ‹€μŠ΅

Description

  • Raywenderich Fundamental
  • Raywenderich Intermediate
  • Raywenderich Advanced

About

"λ””μžμΈ νŒ¨ν„΄μ€ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ°œλ°œν•  λ•Œ λ°œμƒν•˜λŠ” λ‹€μ–‘ν•œ λ¬Έμ œμ— λŒ€ν•œ μž¬μ‚¬μš© κ°€λŠ₯ν•œ ν…œν”Œλ¦Ώ"

객체 지ν–₯ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό μ„€κ³„ν•˜κ³  μž¬μ‚¬μš© κ°€λŠ₯ν•˜κ²Œ λ§Œλ“œλŠ” 것은 μ–΄λ ΅μŠ΅λ‹ˆλ‹€. ν΄λž˜μŠ€λ“€ κ°„μ˜ 관계λ₯Ό μ μ ˆν•˜κ²Œ λ§Œλ“€μ–΄μ„œ 이걸 μˆ˜ν–‰ν•΄μ•Ό ν•˜λŠ”λ°, λ‹Ήμž₯ ν•΄κ²°ν•  λ¬Έμ œμ—λ§Œ μ§‘μ€‘ν•˜λ‹€ 보면 λ‚˜μ€‘μ— μƒˆλ‘œμš΄ λ¬Έμ œκ°€ λ°œμƒν–ˆμ„ λ•Œ μœ μ§€, λ³΄μˆ˜κ°€ νž˜λ“€μ–΄ 질 수 μžˆμŠ΅λ‹ˆλ‹€.

λ”°λΌμ„œ, λ‹€μ–‘ν•œ 문제λ₯Ό κ²ͺ은 κ°œλ°œμžλ“€μ΄ 객체 지ν–₯ μ†Œν”„νŠΈμ›¨μ–΄λ₯Ό κ°œλ°œν•  λ•Œ 많이 κ²ͺλŠ” 문제λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ μ‚¬μš©ν•œ κ²½ν—˜μ„ λ””μžμΈ νŒ¨ν„΄μœΌλ‘œ λ§Œλ“€μ—ˆκ³  1994λ…„ Design Patterns: Elements of Reusable Object-Oriented Softwareμ—μ„œ μ–΄λŠ 정도 μ •ν˜•ν™”λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

λ¬Όλ‘  μœ„μ˜ λ””μžμΈ νŒ¨ν„΄λ“€μ„ λͺ¨λ‘ μ•Œλ©΄ μ’‹κ² μ§€λ§Œ μ•ˆλ‹€κ³  ν•΄μ„œ 쒋은 μ½”λ“œλ₯Ό λ§Œλ“€ 수 μžˆλŠ” 것은 μ•„λ‹™λ‹ˆλ‹€. λ˜ν•œ μœ„μ— μžˆλŠ” νŒ¨ν„΄λ“€ 외에도 더 λ§Žμ€ λ””μžμΈ νŒ¨ν„΄μ΄ 있기 λ•Œλ¬Έμ— 각 νŒ¨ν„΄λ“€μ΄ μ–Έμ œ μ‚¬μš©λ˜λ©΄ 쒋은지λ₯Ό μ•„λŠ” 것이 μ€‘μš”ν•©λ‹ˆλ‹€. λ¬Έμ œλ₯Ό λͺ…ν™•νžˆ μ΄ν•΄ν•˜κ³  μ μš©ν•΄μ•Όν•©λ‹ˆλ‹€.

λ””μžμΈ νŒ¨ν„΄μ„ μ‚¬μš©ν•˜λ©΄ ν˜‘μ—…μ„ ν•  λ•Œ 해결방법을 λ””μžμΈ νŒ¨ν„΄μœΌλ‘œ μ œμ‹œν•˜λ©΄ μ„€λͺ…이 간단해지고 μƒˆλ‘œμš΄ κ°œλ°œμžκ°€ ν•©λ₯˜ν•΄λ„ κΈ°μ‘΄ ν”„λ‘œμ νŠΈλ₯Ό μ΄ν•΄ν•˜λŠ”λ° 어렀움이 없도둝 ν•΄μ€λ‹ˆλ‹€. λ¬Όλ‘  κ³Όλ„ν•˜κ²Œ μ‚¬μš©λ˜λ©΄ ν”„λ‘œμ νŠΈκ°€ λ³΅μž‘ν•΄μ§‘λ‹ˆλ‹€.

μΆ”κ°€μ μœΌλ‘œ ꡬ체적인 아킀텍쳐 νŒ¨ν„΄μΈ MVC, MVVM, MVP, Ribs, Viper 등은 λ³„λ„λ‘œ 정리할 μ˜ˆμ •μž…λ‹ˆλ‹€.

μ’…λ₯˜

Creational Pattern (생성 νŒ¨ν„΄) Structual Pattern (ꡬ쑰 νŒ¨ν„΄) Behavioral Pattern (행동 νŒ¨ν„΄)
β€’ Abstract Factory
β€’ Builder
β€’ Factory Method
β€’ Prototype
β€’ Singleton
β€’ Adapter
β€’ Bridge
β€’ Composite
β€’ Decorator
β€’ Facade
β€’ Flyweight
β€’ Proxy
β€’ Chain of Responsibilty
β€’ Command
β€’ Interpreter
β€’ Iterator
β€’ Mediator
β€’ Memento
β€’ Observer
β€’ State
β€’ Strategy
β€’ Template Method
β€’ Visitor

Getting Start