디자인 패턴/행위 패턴

Command 패턴

언린이 2021. 10. 16. 11:42

Command 패턴은 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴입니다.

 

 

구조

  • Invoker
    • 기능의 실행을 요청하는 호출자 클래스입니다.
  • Recevier
    • ConcreteCommand에서 execute 메서드를 구현할때 필요한 클래스입니다.
    • ConcreteCommand의 기능을 실행하기 위해 사용하는 수신자 클래스입니다.
  • Command
    • 실행될 기능에 대한 인터페이스입니다.
    • 실행될 기능을 execute 메서드로 선언합니다.
  • ConcreteCommand
    • 실제로 실행되는 기능을 구현합니다.
    • Command 인터페이스의 execute 메서드를 실제로 구현합니다.

 

 

활용 상황

  • 이벤트가 발생했을때 실행될 기능이 다양하면서도 변경이 필요한 경우 유용합니다.
  • 커맨드 발생 시점을 사용자가 커스터마이징해야 할때 유용합니다.
  • 여러 커맨드를 조합하여 하나의 커맨드처럼 사용할 필요가 있을때 유용합니다.
  • 커맨드 실행 취소, 재실행 등의 기능을 구현해야 할때 유용합니다.

 

 

Command 패턴의 장단점

  • 장점
    • 작업을 수행하는 객체와 작업을 요청하는 객체를 분리하기 때문에 SRP 원칙을 잘 지킵니다.
    • 기존 코드 수정 없이 새로운 리시버와 새로운 커맨드 추가가 가능하기 때문에 OCP 원칙을 잘 지킵니다.
    • 커맨드 단위의 별도의 액션 등이 가능하고 커맨드 상속 및 조합을 통해 더 정교한 커맨드를 구현할 수 있습니다.
  • 단점
    • 전체적으로 이해가 필요하고 복잡한 설계구조를 가집니다.

'디자인 패턴 > 행위 패턴' 카테고리의 다른 글

Chain of responsibility 패턴  (0) 2021.10.29
Iterator 패턴  (0) 2021.10.26
Visitor 패턴  (0) 2021.10.23
Observer 패턴  (0) 2021.10.19
State 패턴  (0) 2021.10.12