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): μš”μ²­μ„ μˆ˜ν–‰ν•˜κΈ° μœ„ν•΄ ν•΄μ•Ό ν•˜λŠ” κΈ°λŠ₯이 κ΅¬ν˜„λ˜μ–΄ μžˆλŠ” 객체. μ–΄λ–€ μ’…λ₯˜μ˜ 객체도 μ²˜λ¦¬μžκ°€ 될 수 있음
  • ν΄λΌμ΄μ–ΈνŠΈ: ꡬ체적 λͺ…λ Ή 객체λ₯Ό μƒμ„±ν•˜κ³  μ²˜λ¦¬μžμ™€ 연결함

νŒ¨ν„΄μ˜ ꡬ쑰

μŠ€ν¬λ¦°μƒ· 2021-09-23 μ˜€ν›„ 11 53 48
  • μž₯점
    • λͺ…λ Ή 객체λ₯΄ μ—¬λŸ¬ 객체 κ³΅μœ ν•˜ 수 있음
    • μ‹€ν–‰μ‹œκ°„μ— λͺ…λ Ήκ³  λͺ…λ Ή 처리자λ₯΄ λ³€κ²½ν•  수 있음
    • μƒˆλ‘œμœ  λͺ…λ € 객체λ₯Ό λ§Œλ“€κΈ° 쉬움
    • λͺ…λ Ήμ˜ μš”μ²­μžμ™€ 처리자λ₯Ό λΆ„λ¦¬ν•˜ 수 있음
    • μ—¬λŸ¬ λͺ…λ € 객체λ₯Ό μ‘°ν•©ν•˜μ—¬ 더 큰 λͺ…령을 λ§Œλ“€ 수 있음
  • 단점
    • μž‘μ€ λͺ…λ Ή ν΄λž˜μŠ€λ“€μ΄ 많이 λ§Œλ“€μ–΄μ§ˆ 수 있으
    • μ½”λ“œ μžμ²΄κ°€ λ³΅μž‘ν•΄μ§ˆ 수 있음