Command 패턴

CJB_ny·2022년 3월 4일
0

Unity_Server

목록 보기
47/55
post-thumbnail

오늘은 "Command패턴 이론" 대해서 알아 볼 것이다.

우리가 나중에 Job, Task와 같은 것들을 관리하는 "Queue"가

전형적인 Command패턴의 예제 이다.

이런식으로 식당안에 클라이언트 세션이 있었는데

클라세션이 이런식으로 뭔가를 요청하면 직원이 와서 요청사항을 들어 줄 것이다.

그리고 요청사항을 받자마자 주방으로 가서 일을 처리를 하는 식이

우리가 이때까지 코드로 만든 것인데

주방이 작아서 직원이 한명밖에 못들어가는데

이렇게 요청사항이 많아져서 직원들이 몰려가지고

일감들이 밀리게 되었다.

( 이전시간에 lock부분에서 쓰레드들을 보면 그렇다 )

그래서 식당 주인이

"어? 일감이 밀리네 그러면 직원들 더 채용하자!" 해가지고

쓰레드(직원)을 더 추가를 해서 일을 시키도록 했는데

일이 더 빨리 처리 될 일이 없다.

이것이 우리가 코드로 구현을 하던 것이다.

그래서 이런식으로 테이블 직원, 주방 직원을 나누어서

테이블 직원은 클라세션의 요청사항을 주문서에 적어서

주방 쓰레드한테 넘겨주고

주방쓰레드는 이것을 처내기만 하면되는 것이다.

1. 커맨드 패턴의 핵심

어떤 요청이 왔을 때

그것을 "주문서"에 담는다.

이게 중요한 개념이다.

이 요청을 캡슐화를 한다고 한다.

"주문서"를 만들어가지고 나중에 "주문서"를 본 사람쪽에서

진짜 똑같이 하나도 안 틀리고

주문서에서 요청한 사항을 실행할 수 있게끔 만들어 주는게

커맨드 패턴이다.

2. 커맨드 패턴 장점

a. 주문이 오는 시점

b. 실제로 주문을 받아서 음식을 만드는 시점

a, b를 둘로 "분리"를 할 수 있다는 것이다.


그리고 또 "주문서"라는 개념이 있어서

예를 들어 주문을 취소하는 경우

요청사항을 undo하는 경우에도

커맨드패턴을 사용을 하면은

undo라는 개념을 사용할 수 있어서 편리하다.

( 문서 작업의 crtl + z )

아무튼 이렇게 편리하고

앞으로 이것을 코드로 구현을 할 것이다.

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글