Design Pattern for Smalltalk – Command

t_Dpsc_chapter05_Command_01

Command 패턴은 어떠한 작동을 시작과 분배, 작업부로 나눔으로서 각 부분에 대한 유지보수와 느슨한 연결을 통한 재사용성을 높이는데 그 목적이 있다. 실행되어야 하는 실제 작동내용을 구현하고 있는 클래스와 작동을 시작시키는 부분을 분리함으로서 작업부는 필요한 만큼 재사용 될 수 있으며 작업부는 또한 실제 구현부를 따로 둠으로서 코드관리에 유연성을 확보한다

Command패턴에서 최상위 클래스는 명령부에 대한 인터페이스만 확보하는 추상클래스로서 하위클래스의 동작 스타일을 정의하게 된다. 일반적인 Application의 예를 들어보자. 사용자는 종종 프로그램의 mainmenu와 popup에서 동일한 menuitem을 확인할 수 있다. 물론 양쪽의 menuitem은 대부분의 경우 동일한 동작을 할 것이다. 이 때 menuitme의 코드에서는 동일한 명령클래스를 (또는 인스턴스를) 호출하는 코드를 가지고 있을 것이다. 이런식으로 실제 동작과 동작을 필요로하는 부분이 분리되어 있다면 그건 Command패턴으로 봐도 무방하다고 생각한다.

Command패턴은 그리 복잡하지 않다. mobile app을 예로 들어보자. mobile app에서는 각종 제스처가 사용된다. 하지만 어떤 체스처라고 해도 반드시 어떤 작동을 일으키기 위한 목적을 가지고 있다. 그렇다면 제스처의 검출 부분과, 제스처의 검출 시 어떤 동작을 할지를 별도의 구조로 분리해서 동작부분만 따로 클래스군으로 관리한다면 새로운 동작을 테스트하기 쉬운 제스처로 연결만 했다가 테스트가 끝난 다음 원하는 제스처로 연결을 바꿔주면 개발 및 코드의 유지보수도 쉽게 할 수 있다.

이렇게 필요한 부분을 분리하고, 역할을 할당하는 구조를 논의하고 규정하는게 Design pattern 이지만 Command패턴은 그 중에서도 단순하며 명확한 패턴이다.

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

이 사이트는 스팸을 줄이는 아키스밋을 사용합니다. 댓글이 어떻게 처리되는지 알아보십시오.