Design Pattern
μννΈμ¨μ΄ λμμΈ ν¨ν΄(SW Design Pattern)μ μννΈμ¨μ΄ 곡νμ μννΈμ¨μ΄ λμμΈμμ νΉμ λ¬Έλ§₯μμ 곡ν΅μ μΌλ‘ λ°μνλ λ¬Έμ μ λν μ¬μ¬μ© κ°λ₯ν ν΄κ²°μ±
μ΄λ€.
βλ°ν΄λ₯Ό λ€μ λ°λͺ
νμ§ λ§λΌ(Donβt reinvent the wheel)β μ΄ κ΄μ©μ μ΄κ΅¬λ μ΄λ―Έ λ°λͺ
λμκ³ μ΄μμ κ²°ν¨μ΄ μλ€κ³ κ°μ£Όλμ§ μλ κ²μ μ¬λ°λͺ
μλλ λΆνμνλ€λ μλ―Έμ΄λ€. μ΄μ μ λ€λ₯Έ μ¬λλ€μ μν΄ λ§λ€μ΄μ‘κ±°λ μ΅μ νλ κΈ°μ΄μ μΈ λ°©μμ 볡μ νλΌλ κ²μ΄λ€.
β’
λμμΈ ν¨ν΄μ νλ‘κ·Έλλ¨Έκ° μ΄ν리μΌμ΄μ
μ΄λ μμ€ν
μ λμμΈν λ μ¬μ©νλ©°, μ€μ μ μΌλ‘ ꡬνλ λ΄μ©μ΄ μλλΌ λ¬Έμ ν΄κ²°μ μν νμνλ κ΄ν μ΄μ ν
νλ¦Ώμ΄λ€.
β’
κΈ°μ‘΄μ μ μ 리λ λμμΈ ν¨ν΄μ μ¬μ©νμ¬ μ½λμ μ¬μ¬μ©μ±, νΈνμ±, μ μ§ λ³΄μμ±μ 보μ₯ν μ μλ€.
β λμμΈ ν¨ν΄μ SOLD μμΉμ κΈ°λ°νλ€
μμ¬
건μΆμ κ°λ
μΌλ‘μμ ν¨ν΄μμ μμνμ¬ 1987λ
λΆν° μ€νλκ³ μ 리λμ΄μμΌλ©°, 1994λ
GoF*μΒ Design Patterns: Elements of Reusable Object-Oriented SoftwareΒ μ΄ μΆνλκ³ μΈκΈ°λ₯Ό λμλ€.
β’
Design Patterns μ±
μ μ μ Erich Gamma, Richard Helm, Ralph Johnson, John Vlissdesκ° GoF(Gang of Four, μ¬μΈλ°©)λ‘ λΆλ¦°λ€.
λμμΈ ν¨ν΄μ 컨ν
μ€νΈ, λ¬Έμ , ν΄κ²°μ κΈ°μ νλ€.
컨ν μ€νΈ (context)
β’
λ¬Έμ κ° λ°μνλ μν©μ κΈ°μ νλ€.
β’
μ¦, ν¨ν΄μ΄ μ μ©λ μ μλ μν©, μ μ©νμ§ μμ μν© λ±μ λνλΈλ€.
λ¬Έμ (problem)
β’
ν¨ν΄μΌλ‘ ν΄κ²°νκ³ μ νλ μ¬λ¬ λμμΈ μ΄μλ€μ κΈ°μ νλ€.
ν΄κ²° (solution)
β’
λ¬Έμ λ₯Ό ν΄κ²°νκΈ° μν μ€κ³(μμ, μμκ°μ κ΄κ³, μ±
μ, νλ ₯ κ΄κ³ λ±)λ₯Ό κΈ°μ νλ€.
β’
μ΄λ, ν΄κ²°μ ꡬ체μ μΈ κ΅¬ν λ°©λ²μ΄λ μΈμ΄μ μμ‘΄μ μ΄μ§ μμΌλ©°, λ€μν μν©μ μ μ©ν μ μλ μΌμ’
μ ν
νλ¦Ώμ΄λ€.
GoFμ λμμΈ ν¨ν΄μμλ κ°μ²΄μ§ν₯μ λμμΈ ν¨ν΄μ μμ± ν¨ν΄(Creational Pattern) , ꡬ쑰 ν¨ν΄(Structural Pattern) , νλ ν¨ν΄ (Behavioral Pattern) 3κ°μ§λ‘ ꡬλΆνλ€.
μμ± ν¨ν΄ | ꡬ쑰 ν¨ν΄ | νλ ν¨ν΄ |
Singleton | Adapter | Chain-of-responsibility |
Abstract Factory | Bridge | Command |
Builder | Composite | Interpreter |
Prototype | Decorator | Iterator |
Facade | Mediator | |
Flyweight | Memento | |
Proxy | Observer | |
State | ||
Strategy | ||
Template Method | ||
Visitor |
μμ± ν¨ν΄ (Creational Pattern)
β’
μμ± ν¨ν΄μ κ°μ²΄μ μμ± λ©μ»€λμ¦μ λ€λ£¬λ€.
β’
κ°μ²΄μ μμ± λ° μ‘°ν©μ΄ νλ‘κ·Έλ¨μ μν₯μ λΌμΉμ§ μλλ‘ λΆλ¦¬νμ¬ μ μ°μ±μ λμ΄κ³ ,
β’
μ½λμ μ μ§/보μλ₯Ό μ½κ²νκΈ° μν λμμΈ ν¨ν΄μ΄λ€.
ꡬ쑰 ν¨ν΄ (Structural Pattern)
β’
ꡬ쑰 ν¨ν΄μ ν΄λμ€λ κ°μ²΄ λ±μ μμλ€μ κ΄κ³λ₯Ό μ©μ΄νκ² κ΅¬μ‘°ννκΈ° μν λμμΈ ν¨ν΄μ΄λ€.
β’
μμλ€μ μ‘°ν©νμ¬ λ ν° κ΅¬μ‘°λ₯Ό λ§λ€ μ μκ² νλ€.
νλ ν¨ν΄ (Behavioral Pattern)
β’
νμ ν¨ν΄μ ν΄λμ€λ κ°μ²΄λ€μ μνΈμμ©μ μν μκ³ λ¦¬μ¦, μ±
μ λΆλ°° λ±μ μ μνλ ν¨ν΄μ΄λ€.