커맨드 패턴이란?
커맨드 패턴은 객체의 행위(메소드)를 클래스로 만들어 캡슐화하는 패턴이다. 행위 패턴의 하나
행위(Behavioral) 패턴이란?
- 객체나 클래스 사이의 알고리즘이나 책임 분배에 관련된 패턴
- 한 객체가 혼자 수행할 수 없는 작업을 여러 개의 객체로 어떻게 분해하는지, 또 그렇게 하면서도 객체 사이의 결합도를 최소화하는 것에 중점을 둔다.
이해를 돕기 위한 간단 예시
리모콘에는 다양한 기능을 수행하는 버튼이 있죠?
다양한 기능들을 메소드 단위로 구현할텐데, 리모콘 클래스 하나에 모두 보관해서 호출 할 수 있겠지만, 리모콘 객체가 매우 거대해질 겁니다.(한 클래스에 많은 메소드를 넣으니까 코드가 길고 복잡하겠죠? 기능을 추가하거나 수정하는데에도 번거로움이 있을 것 같아요).
하지만, 각 기능을 호출하는 버튼들을 클래스 만들어서 관리하면 의존성을 제거할 수 있고 기능이 추가되거나 변경되도 리모콘 클래스 수정 없이 기능에 대한 버튼 클래스를 재정의하면 되므로 시스템이 확장성이 있으면서 유연성을 가질 수 있겠죠.
코드
명령을 받는 객체와 명령을 수행해야 하는 객체간의 명령 전달 문제가 있다. 어떻게 해결할 수 있을까? 이 문제를 해결하는 방법은 공통 인터페이스를 먼저 정의하고 여기서 상속을 받아 원하는 작업을 수행하게 하면 된다. 즉, 각 수행할 명령을 독립된 객체로 만들고, 이 독립된 객체를 통괄적으로 다루기 위해 하나의 인터페이스를 상속받도록 한는 것이다.
'Programming > 디자인 패턴' 카테고리의 다른 글
Template Method Pattern (0) | 2024.10.14 |
---|---|
데코레이터 패턴(Decorator Pattern) (0) | 2021.12.18 |
컴포지트 패턴(Composition Pattern) (0) | 2021.12.14 |
프록시 패턴 (0) | 2021.12.11 |