{ λμμΈ ν¨ν΄μ΄λ? }
μννΈμ¨μ΄λ₯Ό μ€κ³ν λ νΉμ λ§₯λ½μμ μμ£Ό λ°μνλ κ³ μ§μ μΈ λ¬Έμ λ€μ μ¬μ©ν ν μ μλ μ νμ ν΄κ²° λ°©μμ λ§νλ€.
- λμμΈ ν¨ν΄μ λ¬Έμ λ° λ°°κ²½, μ€μ μ μ© μ¬λ‘, μ¬μ¬μ©μ΄ κ°λ₯ν μν μ½λ λ±μΌλ‘ ꡬμ±λμ΄ μλ€.
- “λ°ν΄λ₯Ό λ€μ λ°λͺ νμ§ λ§λΌ(Don’t reinvent the wheel)” λΌλ λ§κ³Ό κ°μ΄, κ°λ° κ³Όμ μ€μμ λ¬Έμ κ° λ°μνλ©΄ μλ‘ ν΄κ²°μ± μ ꡬμνλ κ²λ³΄λ€ λ¬Έμ μ ν΄λΉνλ λμμΈ ν¨ν΄μ μ°Έκ³ νμ¬ μ μ©νλ κ²μ΄ λ ν¨μ¨μ μ΄λ€.
- GoFμ λμμΈ ν¨ν΄ μ νμ λ°λΌ μμ± ν¨ν΄ 5κ°, ꡬ쑰 ν¨ν΄ 7κ°, νμ ν¨ν΄ 11κ° μ΄ 23κ°μ ν¨ν΄μΌλ‘ ꡬμ±λλ€.
{ λμμΈ ν¨ν΄ μ₯λ¨μ }
μ₯μ
- λ²μ©μ μΈ μ½λ© μ€νμΌλ‘ μΈν΄ ꡬ쑰 νμ μ΄ μ©μ΄νλ€.
- κ°μ²΄ μ§ν₯ μ€κ³ λ° κ΅¬νμ μμ°μ±μ λμ΄λ λ° μ ν©νλ€.
- κ²μ¦λ ꡬ쑰μ μ¬μ¬μ©μ ν΅ν΄ κ°λ° μκ°κ³Ό λΉμ©μ΄ μ μ½λλ€.
- κ°λ°μ κ°μ μνν μμ¬μν΅μ΄ κ°λ₯νλ€.
- λμμΈ ν¨ν΄μ λ컀νλ§μ μ κ²½μ¨μ μ μλ λ§νΌ, νλ‘κ·Έλ¨μ μμ κ³Ό κΈ°λ₯ μΆκ°κ° μ μ°νλ€.
λ¨μ
- κ°μ²΄ μ§ν₯μ κΈ°λ°μΌλ‘ ν μ€κ³μ ꡬνμ λ€λ£¨λ―λ‘ κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ°μ΄ μλ κ²½μ° μ μ©νκΈ° μ΄λ ΅λ€.
- μ½λμ μ μ°μ±μ μ±λ₯μ λΉμ©μ μꡬνλ€. μ¦, λμμΈ ν¨ν΄μ΄ μ΅κ³ μ μ€ν μλλ₯Ό λ΄λ μ΅μ νλ μ½λλ μλλ€.
{ λμμΈ ν¨ν΄ μ’ λ₯ }
μμ± ν¨ν΄ Creational Pattern
μμ± ν¨ν΄μ κ°μ²΄ μμ±κ³Ό κ΄λ ¨λ ν¨ν΄μ΄λ€.
μμ± ν¨ν΄μ κ°μ²΄μ μμ±κ³Ό μ°Έμ‘° κ³Όμ μ μΊ‘μννμ¬ κ°μ²΄κ° μμ±λκ±°λ λ³κ²½λμ΄λ νλ‘κ·Έλ¨μ ꡬ쑰μ μν₯μ ν¬κ² λ°μ§ μλλ‘ νμ¬ νλ‘κ·Έλ¨μ μ μ°μ±μ λν΄μ€λ€.
μ΄ 5κ°μ ν¨ν΄μ΄ μλ€.
- μΆμ ν©ν 리 Abstract Factory
- ν©ν 리 λ©μλ Factory Method
- λΉλ Builder
- νλ‘ν νμ Prototype
- μ±κΈν€ Singleton
ꡬ쑰 ν¨ν΄ Structural Pattern
ꡬ쑰 ν¨ν΄μ ν΄λμ€λ κ°μ²΄λ€μ μ‘°ν©νμ¬ λ ν° κ΅¬μ‘°λ‘ λ§λ€ μ μκ² ν΄μ£Όλ ν¨ν΄μ΄λ€.
ꡬ쑰 ν¨ν΄μ κ΅¬μ‘°κ° λ³΅μ‘ν μμ€ν μ κ°λ°νκΈ° μ½κ² λμμ€λ€.
μ΄ 7κ°μ ν¨ν΄μ΄ μλ€.
- μ΄λν° Adaptor
- λΈλ¦¬μ§ Bridge
- μ»΄ν¬μ§νΈ Composite
- ν μ½λ μ΄ν° Decorator
- νΌμΈλ Facade
- νλΌμ΄μ¨μ΄νΈ FlyWeight
- νλ‘μ Proxy
νμ ν¨ν΄ Behavioral Pattern
νμ ν¨ν΄μ ν΄λμ€λ κ°μ²΄λ€μ΄ μλ‘ μνΈμμ©νλ λ°©λ²μ΄λ μ± μ λΆλ°° λ°©λ²μ μ μνλ ν¨ν΄μ΄λ€.
νμ ν¨ν΄μ νλμ κ°μ²΄λ‘ μνν μ μλ μμ μ μ¬λ¬ κ°μ²΄λ‘ λΆλ°°νλ©΄μ κ²°ν©λλ₯Ό μ΅μνν μ μκ² λμμ€λ€.
μ΄ 11κ°μ ν¨ν΄μ΄ μλ€.
- μ± μ μ°μ Chain of Responsibility
- λͺ λ Ή Command
- μΈν°νλ¦¬ν° Interpreter
- λ°λ³΅μ Iterartor
- μ€μ¬μ Mediator
- λ©λ©ν Memento
- μ΅μ λ² Observer
- μν State
- μ λ΅ Strategy
- ν νλ¦Ώ λ©μλ Template Method
- λ°©λ¬Έμ Visitor
'π₯οΈ Study Note > Design Patteren' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
νλ‘ν νμ (ProtoType) ν¨ν΄ (0) | 2023.06.19 |
---|---|
κ΄μ°°μ(Observer) ν¨ν΄ (0) | 2023.06.08 |
κ²½λ(FlyWeight) ν¨ν΄ (2) | 2023.06.07 |
λͺ λ Ή(Command) ν¨ν΄ (2) | 2023.06.05 |