BOID

[디자인 패턴] 커맨드 패턴이란? (1/2) (Swift) 본문

디자인 패턴 (Swift)

[디자인 패턴] 커맨드 패턴이란? (1/2) (Swift)

HoonIOS 2023. 5. 30. 20:44

안녕하세요, HoonIOS입니다. :)

이번에 회사에서 특정 앱을 구현하게 됐는데 구조에 대해 고민을 하면서 여러 패턴에 대해 찾아보던 중 커맨드 패턴 (Command Pattern)이 구현 목적에 어울리는 패턴이라고 생각해서 해당 패턴에 대해 정리를 해보려고 합니다.

 

우선 요구 사항을 아래와 같습니다.

1. 각 테스트 케이스를 모듈화 할 수 있을 것

2. 테스트 케이스를 순서대로 처리할수 있는 로직에 맞는 로직

3. 테스트 케이스의 순서는 유동적으로 바뀔 수 있고 추가 및 삭제, 순서 변경이 될 수 있음 

커맨드 패턴이란?

커맨드 패턴의 정의는 모든 정보가 포함된 독립 실행형 객체(캡슐화)로 변환하는 디자인 패턴입니다.

이 패턴은 대기열에 넣을수도 있고 실행을 취소할 수도 있습니다.

또, 커맨드를 필요한 시점에 실행을 할수도 있는 게 장점입니다.

 

즉 회사 앱에서는 여러 테스트 케이스를 커맨드화 해서 독립적으로 실행할 수 있도록 처리하면 각 테스트 케이스들끼리 연결 되어 있지 않고 모듈화 해서 처리를 할 수 있습니다.

 

구성 요소

  1. Command: 실행 요청에 대한 인터페이스를 정의한 클래스로 이 클래스 내부에는 excute(실행 메서드)가 포함 되어 있습니다. 
  2. ConcreateCommand: Command 인터페이스를 구현하는 클래스입니다. 각 객체와 실행할 메서드를 연결시키는 역할을 하므로 각 테스트 케이스 별로 인터페이스를 정의하면 됩니다.
  3. Invoker: 발송자 클래스로 요청들을 시작 및 관리하는 역할을 합니다. 이 클래스는 Command들을 Array로 관리를 하거나 저장을 합니다.
  4. Receiver: 수신자의 역할로 요청을 수신하고 실제로 요청을 처리하는 객체를 의미합니다.

 

 

커맨드 패턴 장점

  1. 유연성과 확장성을 제공하여 커맨드를 더 키울 수 있고 유연하게 시작 종료를 진행할 수 있습니다.
  2. 실행 취소, 다시 실행, 로깅과 같은 기능을 구현하는데 용이합니다.

 

 

이렇게 간단하게 커맨드 패턴에 대해 알아봤는데요 다음에는 구조 및 코드로 살펴보도록 하겠습니다! 긴 글 읽어주셔서 감사합니다.  

 

 

반응형
Comments