프로그래밍 기술/Escort GoF의 디자인 패턴 C#

[소프트웨어 설계 패턴 C#] 16. 명령 패턴 (Command Pattern)

언제나휴일 2016. 4. 17. 13:20
반응형

16. 명령 패턴(Command Pattern)

 

 프로그래밍을 하다 보면 명령을 내리는 개체와 명령을 수행하는 개체를 나누는 작업은 매 번 있는 작업입니다. 그런데, 실제 요청한 작업을 수행하는 개체에서 수행에 필요한 알고리즘을 모두 포함시켰을 경우에 비슷한 형태의 여러 메서드를 구현하여야 하는 경우가 발생합니다. 경우에 따라서는 명령을 내리는 시점과 실제 명령을 수행하는 시점이 다르고 다양한 설정에 따라 구체적인 수행 알고리즘이 다른 경우도 발생합니다. 이와 같은 경우에 명령을 내리는 곳에서 일부 알고리즘을 정의하여 명령을 수행하는 개체의 메서드를 호출할 때 입력 인자로 전달하는 것이 더 효과적인 경우가 발생합니다. 이와 같은 경우에 명령 패턴은 효과적으로 사용할 수 있습니다.

 

 명령 패턴은 명령을 요청하는 곳에서 수행할 알고리즘을 입력 인자로 정의하여 명령을 수행하는 곳에서는 입력 인자로 전달받은 알고리즘을 이용을 하게 합니다. 이를 위해 명령을 수행하는 형식의 특정 메서드에는 수행에 필요한 알고리즘의 추상적 정의를 합니다. 명령을 요청하는 곳에서는 재 정의를 통해 구체화된 알고리즘을 구현하고 이를 입력 인자로 전달하여 명령을 내리게 됩니다. 이를 통해 명령을 수행하는 형식 개체에서는 전달받은 알고리즘 개체를 이용하여 명령을 수행할 수 있게 됩니다.

 

 이와 같은 명령 패턴을 사용하게 되면 대부분의 알고리즘은 동일하지만 일부 알고리즘은 런 타임 시에 결정을 해야 할 경우에 개발 비용을 줄일 수 있습니다. 이 외에도 추상적인 행위에 대한 약속과 구체적인 행위에 대한 구현을 분리시킴으로 인해 명령을 수행하는 개체 형식을 정의를 함에 있어 세부적인 알고리즘을 정의하지 않아도 되기 때문에 업무 분담에 효율을 높일 수가 있습니다.

 

 일반적으로 메뉴나 여러 작업을 트랜잭션 형태로 수행을 해야 하는 경우와 다양한 콜백을 구현을 하는 경우등에서 사용이 되고 있습니다. 


Command.zip



2016/04/28 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 명령 패턴(Command Pattern) - 개요, 시나리오


2016/04/28 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 명령 패턴(Command Pattern) - 설계(Design)


2016/04/28 - [프로그래밍 기술/Escort GoF의 디자인 패턴 C#] - [C#] 명령 패턴(Command Pattern) - 구현


반응형