728x90
반응형
커맨드 패턴은 요청 내역을 객체로 캡슐화해서 객체를 서로 다른 요청 내역에 따라 처리한다. 요청을 큐에 저장하거나 로그로 기록하여 작업취소 기능을 사용할 수도 있다.
다음과 같은 리모컨과 리모컨 버튼을 눌렀을 때 작동시키고 싶은 가전제품이 있다. 가전제품은 각각 다른 커맨드를 갖고 있어서 한 제품당 on/off만 있는 버튼들을 눌러 어떻게 처리할지에 대한 고민이 필요하다.
![](https://blog.kakaocdn.net/dn/s3KuH/btrNhuUFddM/KRKLthrmd5ik8sMPtzwm3k/img.jpg)
이를 식당에서의 손님, 종업원, 요리사로 볼 수 있다. 종업원(Invoker)은 주문서(Command)를 모으고 전달하는 것 만으로도 요리사(Receiver)에게 손님(Client)의 주문서(Command)를 전달할 수 있다. 그러면 요리사는 주문서의 메뉴를 보고 어떤 작업을 수행할지 결정한다.
![](https://blog.kakaocdn.net/dn/L9lbC/btrNgaPVGgs/v02rbYJyue3YQKXC1xwN0k/img.jpg)
리모컨과 리모컨 버튼을 눌렀을 때의 다이어그램은 아래와 같다.
![](https://blog.kakaocdn.net/dn/biBInu/btrNf94yxy0/Zk4m3hwmCkOUDfRcTSnxjk/img.jpg)
코드에서 Remote Control에는 command들을 저장하는 변수들과 index에 따라 변수에서 command를 가져오는 메서드가 있다.
![](https://blog.kakaocdn.net/dn/kKQGA/btrNk83vyqN/b6sr0GdkJWnuT3lMtQ18qK/img.jpg)
Remote Control의 버튼을 클릭하면 다음과 같은 순서로 메소드가 실행된다.
![](https://blog.kakaocdn.net/dn/Vi5X1/btrNk9nOfkp/y5oAOXbA1TPrGbQCazoSU0/img.jpg)
코드는 git에서!
728x90
반응형
'Computer Science > 디자인패턴' 카테고리의 다른 글
Facade Pattern (0) | 2022.10.18 |
---|---|
Adapter Pattern (0) | 2022.10.18 |
Singleton Pattern (0) | 2022.09.26 |
Factory / Factory Abstract Method Pattern (0) | 2022.09.13 |
Decorator Pattern (0) | 2022.09.06 |