디자인 패턴/행위 패턴
Command 패턴
언린이
2021. 10. 16. 11:42
Command 패턴은 실행될 기능을 캡슐화함으로써 주어진 여러 기능을 실행할 수 있는 재사용성이 높은 클래스를 설계하는 패턴입니다.
구조
- Invoker
- 기능의 실행을 요청하는 호출자 클래스입니다.
- Recevier
- ConcreteCommand에서 execute 메서드를 구현할때 필요한 클래스입니다.
- ConcreteCommand의 기능을 실행하기 위해 사용하는 수신자 클래스입니다.
- Command
- 실행될 기능에 대한 인터페이스입니다.
- 실행될 기능을 execute 메서드로 선언합니다.
- ConcreteCommand
- 실제로 실행되는 기능을 구현합니다.
- Command 인터페이스의 execute 메서드를 실제로 구현합니다.
활용 상황
- 이벤트가 발생했을때 실행될 기능이 다양하면서도 변경이 필요한 경우 유용합니다.
- 커맨드 발생 시점을 사용자가 커스터마이징해야 할때 유용합니다.
- 여러 커맨드를 조합하여 하나의 커맨드처럼 사용할 필요가 있을때 유용합니다.
- 커맨드 실행 취소, 재실행 등의 기능을 구현해야 할때 유용합니다.
Command 패턴의 장단점
- 장점
- 작업을 수행하는 객체와 작업을 요청하는 객체를 분리하기 때문에 SRP 원칙을 잘 지킵니다.
- 기존 코드 수정 없이 새로운 리시버와 새로운 커맨드 추가가 가능하기 때문에 OCP 원칙을 잘 지킵니다.
- 커맨드 단위의 별도의 액션 등이 가능하고 커맨드 상속 및 조합을 통해 더 정교한 커맨드를 구현할 수 있습니다.
- 단점
- 전체적으로 이해가 필요하고 복잡한 설계구조를 가집니다.