ν°μ€ν 리 λ·°
β λμμΈ ν¨ν΄μ΄λ?
λμμΈ ν¨ν΄μ μννΈμ¨μ΄ μ€κ³μμ μμ£Ό λ°μνλ λ¬Έμ λ€μ ν΄κ²°νκΈ° μν΄ κ°λ°λ, κ²μ¦λ μ¬μ¬μ© κ°λ₯ν μ€κ³ ꡬ쑰μ λλ€.
λμμΈ ν¨ν΄μ κ°μ²΄ μ§ν₯ μ€κ³ μμΉ SOLIDμ κΈ°λ°μΌλ‘ νλ©°, μννΈμ¨μ΄μ μ μ§λ³΄μμ±κ³Ό νμ₯μ±μ λμ΄λ λ° λμμ΄ λ©λλ€. κ° λμμΈ ν¨ν΄μ νΉμ μν©μμ μ΄λ»κ² ν΄λμ€λ₯Ό ꡬμ±νκ³ μνΈμμ©ν΄μΌ νλμ§μ λν λͺ νν λ°©λ²μ μ μν©λλ€.
λμμΈ ν¨ν΄μ ν¬κ² μμ±, ꡬ쑰, νμλ‘ λΆλ₯λ©λλ€.
1. μμ± ν¨ν΄ (Creational Patterns)
μμ± ν¨ν΄μ κ°μ²΄ μμ± λ©μ»€λμ¦μ μ€μ μ λμ΄, κ°μ²΄ μμ± κ³Όμ μμμ 볡μ‘μ±μ μ¨κΈ°κ³ , μ μ°μ±μ μ 곡νλ ν¨ν΄μ λλ€. κ°μ²΄λ₯Ό μ΄λ»κ² μμ±νκ³ κ΄λ¦¬ν κ²μΈκ°μ λν λ°©λ²μ λ€λ£Ήλλ€.
- μ±κΈν΄ ν¨ν΄ (Singleton Pattern): ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό νλλ§ μμ±νκ³ , κ·Έ μΈμ€ν΄μ€λ₯Ό μ΄λμλ μ§ μ κ·Όν μ μλλ‘ νλ ν¨ν΄.
- ν©ν 리 λ©μλ ν¨ν΄ (Factory Method Pattern): κ°μ²΄ μμ±μ μ± μμ μλΈν΄λμ€μ μμνμ¬, μ΄λ€ ν΄λμ€μ μΈμ€ν΄μ€λ₯Ό μμ±ν μ§ μλΈν΄λμ€κ° κ²°μ νλλ‘ νλ ν¨ν΄.
- μΆμ ν©ν 리 ν¨ν΄ (Abstract Factory Pattern): μλ‘ κ΄λ ¨λ κ°μ²΄λ€μ κ΅°μ μμ±ν μ μλ μΈν°νμ΄μ€λ₯Ό μ 곡νλ ν¨ν΄.
- λΉλ ν¨ν΄ (Builder Pattern): 볡μ‘ν κ°μ²΄μ μμ± κ³Όμ μ λ¨κ³λ³λ‘ λΆλ¦¬νμ¬, κ°μ²΄μ μμ±κ³Όμ μ λ μ μ°νκ² νλ ν¨ν΄.
- νλ‘ν νμ ν¨ν΄ (Prototype Pattern): κ°μ²΄λ₯Ό μλ‘ μμ±νλ λμ μ΄λ―Έ μ‘΄μ¬νλ κ°μ²΄λ₯Ό 볡μ νμ¬ μλ‘μ΄ κ°μ²΄λ₯Ό μμ±νλ ν¨ν΄.
2. ꡬ쑰 ν¨ν΄ (Structural Patterns)
ꡬ쑰 ν¨ν΄μ ν΄λμ€μ κ°μ²΄ κ°μ κ΄κ³λ₯Ό μ μνμ¬, λ ν° κ΅¬μ‘°λ₯Ό νμ±νλ ν¨ν΄μ λλ€. κ°μ²΄μ ν΄λμ€μ κ΅¬μ± λ°©μμ λ€λ£¨μ΄, κ·Έλ€μ κ΄κ³μ ꡬ쑰λ₯Ό μ½κ² λ³κ²½ν μ μκ² ν©λλ€.
- μ΄λν° ν¨ν΄ (Adapter Pattern): ν΄λμ€μ μΈν°νμ΄μ€λ₯Ό λ€λ₯Έ μΈν°νμ΄μ€λ‘ λ³ννμ¬, νΈνλμ§ μλ μΈν°νμ΄μ€λ₯Ό κ°μ§ ν΄λμ€λ€μ΄ ν¨κ» λμν μ μλλ‘ νλ ν¨ν΄.
- λ°μ½λ μ΄ν° ν¨ν΄ (Decorator Pattern): κ°μ²΄μ λμ μΌλ‘ μλ‘μ΄ κΈ°λ₯μ μΆκ°ν μ μλ ν¨ν΄μΌλ‘, κΈ°μ‘΄μ κ°μ²΄λ₯Ό μμ νμ§ μκ³ λ κΈ°λ₯μ νμ₯ν μ μμ.
- νλ‘μ ν¨ν΄ (Proxy Pattern): μ€μ κ°μ²΄μ λν λ리 κ°μ²΄λ₯Ό μ 곡νμ¬, κ°μ²΄μ μ κ·Όμ μ μ΄νλ ν¨ν΄.
- λΈλ¦¬μ§ ν¨ν΄ (Bridge Pattern): μΆμνμ ꡬνμ λΆλ¦¬νμ¬ κ°κ° λ 립μ μΌλ‘ λ³νν μ μλλ‘ μ€κ³νλ ν¨ν΄.
- μ»΄ν¬μ§νΈ ν¨ν΄ (Composite Pattern): κ°μ²΄λ€μ νΈλ¦¬ κ΅¬μ‘°λ‘ κ΅¬μ±νμ¬ λΆλΆ-μ 체 κ³μΈ΅μ νννλ ν¨ν΄. ν΄λΌμ΄μΈνΈκ° κ°λ³ κ°μ²΄μ λ³΅ν© κ°μ²΄λ₯Ό λμΌνκ² λ€λ£° μ μμ.
- νΌμ¬λ ν¨ν΄ (Facade Pattern): 볡μ‘ν μλΈ μμ€ν μ λν λ¨μνλ μΈν°νμ΄μ€λ₯Ό μ 곡νλ ν¨ν΄.
3. νμ ν¨ν΄ (Behavioral Patterns)
νμ ν¨ν΄μ κ°μ²΄ κ°μ μνΈμμ©μ μ μνκ³ , κ°μ²΄λ€ κ°μ ν΅μ κ³Ό μ± μ λΆλ΄μ μ€κ³νλ ν¨ν΄μ λλ€. κ°μ²΄λ€ κ°μ νλ ₯ λ°©μμ΄λ νλ¦μ λ€λ£Ήλλ€.
- μ΅μ λ² ν¨ν΄ (Observer Pattern): ν κ°μ²΄μ μν λ³νκ° μμ λ, μμ‘΄νλ λ€λ₯Έ κ°μ²΄λ€μκ² μλμΌλ‘ μλ¦Όμ 보λ΄λ ν¨ν΄. μ£Όλ‘ μ΄λ²€νΈ μμ€ν μμ μ¬μ©λ¨.
- μ λ΅ ν¨ν΄ (Strategy Pattern): νμμ μκ³ λ¦¬μ¦μ κ°κ° λ³λμ ν΄λμ€λ‘ μ μνκ³ , λ°νμμ νμμ μκ³ λ¦¬μ¦μ μ νν μ μλλ‘ νλ ν¨ν΄.
- μν ν¨ν΄ (State Pattern): κ°μ²΄μ λ΄λΆ μνμ λ°λΌ νλμ λ¬λ¦¬νλ ν¨ν΄μΌλ‘, μνμ λ³νμ λ°λΌ κ°μ²΄μ νμκ° λ¬λΌμ§.
- ν νλ¦Ώ λ©μλ ν¨ν΄ (Template Method Pattern): μμ ν΄λμ€μμ μκ³ λ¦¬μ¦μ ꡬ쑰λ₯Ό μ μνκ³ , νμ ν΄λμ€μμ ꡬ체μ μΈ λ¨κ³λ₯Ό ꡬννλ ν¨ν΄.
- 컀맨λ ν¨ν΄ (Command Pattern): μμ²μ μΊ‘μννμ¬ κ°μ²΄λ‘ λ§λ€κ³ , μμ²μ μ μ₯νκ±°λ λ‘κΉ νλ λ±μ μμ μ μνν μ μκ² νλ ν¨ν΄.
- λ―Έλμμ΄ν° ν¨ν΄ (Mediator Pattern): κ°μ²΄λ€μ΄ μ§μ ν΅μ νμ§ μκ³ **μ€μ¬μ(Mediator)**λ₯Ό ν΅ν΄ μν΅νκ² νλ ν¨ν΄. κ°μ²΄λ€ κ°μ κ²°ν©λλ₯Ό μ€μΌ μ μμ.
- λ©λ©ν ν¨ν΄ (Memento Pattern): κ°μ²΄μ μνλ₯Ό μ μ₯νκ³ λ³΅μν μ μλ ν¨ν΄μΌλ‘, κ°μ²΄μ μ΄μ μνλ₯Ό 볡ꡬν μ μλλ‘ ν¨.
β λμμΈ ν¨ν΄μ μ₯/λ¨μ
μ₯μ
- μ¬μ¬μ©μ± ν₯μ: κ²μ¦λ ν΄κ²°μ± μ μ 곡νμ¬ μ μ¬ν λ¬Έμ μ μ½λλ₯Ό μ¬μ¬μ©ν μ μκ² ν©λλ€.
- μ μ§λ³΄μμ± κ°μ : μ½λμ ꡬ쑰νμ κ°λ μ±μ λμ¬ μ μ§λ³΄μκ° μ¬μμ§λλ€.
- νμ₯μ± μ 곡: κΈ°μ‘΄ μ½λ μμ μμ΄ μλ‘μ΄ κΈ°λ₯μ μΆκ°νκ±°λ λ³κ²½ν μ μμ΅λλ€.
- μ½λ νμ§ ν₯μ: ꡬ쑰νλ μ κ·Ό λ°©μμΌλ‘ μ½λμ μ λ°μ μΈ νμ§μ΄ κ°μ λ©λλ€.
- κ°λ°μ κ° μμ¬μν΅ κ°μ : κ³΅ν΅ μ΄νλ₯Ό μ 곡νμ¬ κ°λ°μ κ° μμ¬μν΅μ μννκ² ν©λλ€.
λ¨μ
- κ³Όλν μ¬μ© μν: νμ μ΄μμΌλ‘ μ¬μ©νλ©΄ μμ€ν μ΄ λΆνμνκ² λ³΅μ‘ν΄μ§ μ μμ΅λλ€
- μ±λ₯ μ ν κ°λ₯μ±: μΌλΆ ν¨ν΄μ μΆκ°μ μΈ μΆμν λ μ΄μ΄λ‘ μΈν΄ μ±λ₯μ λΆμ μ μν₯μ μ€ μ μμ΅λλ€
- νμ΅ κ³‘μ : ν¨ν΄μ μ΄ν΄νκ³ μ μ ν μ μ©νλ λ° μκ°κ³Ό λ Έλ ₯μ΄ νμν©λλ€
- μ½λ 볡μ‘μ± μ¦κ°: μΌλΆ ν¨ν΄μ μΆκ°μ μΈ ν΄λμ€μ μΈν°νμ΄μ€λ₯Ό λμ νμ¬ μ½λ 볡μ‘μ±μ λμΌ μ μμ΅λλ€
- μ€λ²μμ§λμ΄λ§ μν: κ°λ¨ν λ¬Έμ μ 볡μ‘ν ν¨ν΄μ μ μ©νλ©΄ λΆνμν 볡μ‘μ±μ΄ μκΈΈ μ μμ΅λλ€
λͺ¨λ λ¬Έμ μ ν΄κ²°μ± λ€μ΄ λμμΈν¨ν΄μ κΌ μ λ΅μ΄ μλκ² μλλλ€. μν©μ λ§κ² μ μ ν μ¬μ©ν΄μΌ νλ©° κ° ν¨ν΄μ μ₯λ¨μ μ μ΄ν΄νκ³ , λ¬Έμ μ νΉμ±κ³Ό μꡬμ¬νμ κ³ λ €νμ¬ μ μ€νκ² μ μ©ν΄μΌ ν©λλ€.
'πΊ Develop > π¨ Design Pattern' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
κ°μ²΄ μ§ν₯ μ€κ³ μμΉ SOLID (0) | 2024.10.18 |
---|
- Total
- Today
- Yesterday
- git user.gmail
- λ§₯λ¦°μ΄ μ± μΆμ²
- λμμΈν¨ν΄ μ₯λ¨μ
- λμμΈν¨ν΄ λ¨μ
- git name
- git gmail
- λ§₯ μ± μΆμ²
- κ°μ²΄μ§ν₯μ€κ³ solid
- λμμΈν¨ν΄ μ₯μ
- κ°μ²΄ μ§ν₯ μ€κ³ μμΉ
μΌ | μ | ν | μ | λͺ© | κΈ | ν |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |