κ°μ²΄ μ§ν₯ νλ‘κ·Έλλ° (OOP)/Design Pattern
[Design Pattern] Command Pattern
loki d
2021. 9. 24. 00:03
728x90
Command Pattern
- ν¨ν΄μ λΆλ₯ : νμ ν¨ν΄
- ν¨ν΄μ λͺ©μ : This pattern encapsulates a request as an object, thereby letting you parameterize other objects with different request, queue, or log requests, and support undoable operation. β GoF β (parameterize objects: λͺ λ Ή κ°μ²΄λ₯Ό λ±λ‘νκ³ λμ€μ μ€νν μ μλλ‘ νλ€λ μλ―Έ)
- ν¨ν΄μ μμ€: component
- ν¨ν΄μ μ μ©
- μμ²μ νλ μμ€μ κ·Έ μμ²μ μ€μ μ€ννλ κ°μ²΄λ₯Ό λΆλ¦¬νκΈ° μν΄
- μ€νλ νμμ λν undoκΈ°λ₯, λ‘κ·Έ κΈ°λ₯μ΄ νμν λ
- μμ²μ ν₯ μ μ§ν λμ€μ μ€νν νμμ±μ΄ μμ λ
- λͺ λ Ή interface: ꡬ체μ λͺ λ Ή κ°μ²΄λ₯Ό μν interface, λ³΄ν΅ executeμ undo λ©μλλ₯Ό κ°μ§κ³ μμ
- ꡬ체μ λͺ λ Ή: λͺ λ Ή μ²λ¦¬μμ νλμ μ°κ²°ν¨. μ²λ¦¬μκ° μ 곡νλ λ©μλλ₯Ό μ΄μ©νμ¬ μ€μ νλμ μ€νν¨. ꡬ체μ λͺ λ Ήμ μ²λ¦¬μμ μμ‘΄κ΄κ³λ₯Ό λ§Ίμ
- μ€νμ(invoker): μμ²μ μ€νμ μꡬν¨. λ³΄ν΅ λͺ λ Ή κ°μ²΄λ₯Ό μ μ§ν¨
- μ²λ¦¬μ(receiver): μμ²μ μννκΈ° μν΄ ν΄μΌ νλ κΈ°λ₯μ΄ κ΅¬νλμ΄ μλ κ°μ²΄. μ΄λ€ μ’ λ₯μ κ°μ²΄λ μ²λ¦¬μκ° λ μ μμ
- ν΄λΌμ΄μΈνΈ: ꡬ체μ λͺ λ Ή κ°μ²΄λ₯Ό μμ±νκ³ μ²λ¦¬μμ μ°κ²°ν¨
ν¨ν΄μ ꡬ쑰

- μ₯μ
- λͺ λ Ή κ°μ²΄λ₯΄ μ¬λ¬ κ°μ²΄ 곡μ ν μ μμ
- μ€νμκ°μ λͺ λ Ήκ³ λͺ λ Ή μ²λ¦¬μλ₯΄ λ³κ²½ν μ μμ
- μλ‘μ λͺ λ € κ°μ²΄λ₯Ό λ§λ€κΈ° μ¬μ
- λͺ λ Ήμ μμ²μμ μ²λ¦¬μλ₯Ό λΆλ¦¬ν μ μμ
- μ¬λ¬ λͺ λ € κ°μ²΄λ₯Ό μ‘°ν©νμ¬ λ ν° λͺ λ Ήμ λ§λ€ μ μμ
- λ¨μ
- μμ λͺ λ Ή ν΄λμ€λ€μ΄ λ§μ΄ λ§λ€μ΄μ§ μ μμΌ
- μ½λ μμ²΄κ° λ³΅μ‘ν΄μ§ μ μμ