설계패턴 22. Command Pattern

LSDrug·2024년 6월 13일

설계패턴(完)

목록 보기
22/26

1. 정의

  • 행위(Behavioral) 패턴에 속한다.

  • 클래스가 일을 실행할 때, 자신의 클래스나 다른 클래스의 메소드를 호출한다. 그러나 메소드를 호출한 결과는 오브젝트의 상태에 반영되지만, 일의 이력은 어디에도 남지 않는다.

  • 이때, '이 일을 실행하시오' 라는 '명령'을 표현하는 클래스가 있으면 편리하다.

  • 명령을 나타내는 클래스의 인스턴스로 하나의 '물건'처럼 표현할 수 있다.

  • 명령에 대한 이력을 관리하고 싶을 때에는 그 인스턴스 집합을 관리하면 된다.

  • 명령의 집합을 저장해 두면 같은 명령을 재실행할 수도 있고, 복수의 명령을 모아서 새로운 명령으로 재이용할 수도 있다.

**이와 같은 명령을 'Command Pattern'이라고 이름을 붙여서 사용한다.

  • Command: 명령의 인터페이스를 정의하는 역할을 합니다. 주로 execute() 메서드를 포함하며, 이 메서드는 명령을 실행하는 로직을 담고 있습니다.

  • ConcreteCommand (Command1): 실제로 실행되는 기능을 구현합니다. Command 인터페이스를 구현하며, 특정 수신자(Receiver) 객체에 대한 참조를 가지고 해당 객체의 메서드를 호출하여 작업을 수행합니다.

  • Invoker: 명령의 행동을 개시하는 역할을 합니다. Command 객체를 가지고 있으며, 필요한 시점에 Command의 execute() 메서드를 호출하여 명령을 실행합니다.

  • Receiver: Command가 명령을 실행할 때 그 대상이 되는 역할을 합니다. 실제 작업을 수행하는 로직을 가지고 있습니다.

즉, 여러 명령들을 추상화해서 class로 정의하고 object로 만들어서 사용하는 pattern이다.


profile
마약같은 코딩, 마약같은 코딩러

0개의 댓글