Skip to content

Latest commit

 

History

History
27 lines (14 loc) · 1.53 KB

command.md

File metadata and controls

27 lines (14 loc) · 1.53 KB

커맨드 패턴

커맨드패턴은 invoker(호출자)가 여러 객체들을 직접 의존해 실행하는 것이 아닌 명령(Command)을 통해 행동을 수행하는 패턴이다.

커맨드 패턴을 사용하면 요청을 캡슐화해서 커맨드 객체가 명령을 해야하는 객체들에 대한 의존성을 느슨하게 만들 수 있다.

문제와 예시

예를들어 버튼 클래스를 만들었다고 해보자. 그리고 그 버튼들은 엄청나게 많은 하위클래스가 있다고 생각해보자 여러 기능들을 하는 버튼들이 있고

이러한 버튼들을 사용하려면 호출자 Invoker에서 모든 버튼들을 의존하고 사용해야할 것이다.

그러나 여기서 문제가 있는데 기존 Button 클래스를 수정할 때마다 이러한 자식 클래스의 코드들을 깨트릴 위험이 생긴다.

그래픽 사용자 인터페이스 코드는 비즈니스 로직의 불안정한 코드에 어색하게 의존되어 있다.

해결책

올바른 해결책으로 관심사 분리의 원칙을 기반으로 한다.

버튼과 클라이언트는 서로 의존하게 만들며 Command도 함께 의존한다.

그리고 버튼(receiver)은 커맨드를 의존함으로써 결국 하나의 동작(execute 비즈니스로직)에 관련 로직들을 넣게되면

사용하는 입장에서는 변경이 일어나도 아무런 제약조건이 발생하지 않는 이점이 있다.

구조