본문 바로가기

Design Patterns

Command Pattern ② Implements Command Pattern

336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.
음.. 실제로 음료를 주문한다고 생각하고 소스코드를 한번 작성해 봤습니다. -ㅅ- 개념적으로 설명하면 공부도 안될뿐 더러;; 제대로 해야겠다는 생각이 듭니다.. 사실 이 패턴 공부하면서 ㅠㅠ 잘 모르겠어요.. 갑자기 안하던 공부를 할려니까 머리가 막 아프로 그러네요 -ㅅ- ㅋㅋㅋㅋㅋ 일단 다이어 그램을 그렸습니다. 'ㅡ';; Amondo 로 그렸습니다.

사용자 삽입 이미지

음료를 주문하는 절차를 가진 커맨드 패턴 예제 소스를 만들었는데요.. 먼저 음료라는 추상클래스가 있고 소주, 맥주, 사이다, 콜라 있습니다 -ㅅ-;; 더 추가 하면 되겠죠.. order() 라는 메소드를 오버라이드 해서... 뭐 시켰습니다 라는 메세지가 뜨도록 해놨구요..

Command 인터페이스와 Command 객체인 BeverageOnCommand 라는 클래스가 있고 어떤 형태의 음료를 주문할 것인지에 대한 정보를 담을 수 있으며, execute() 메소드를 통해서 각 음료마다의 order() 메소드를 호출 하도록 했습니다. OrderList 클래스에는 setCommand() 메소드를 통해서 현재 주문하고자 하는것이 음료인지.. 음식인지 에피타이져인지.. 등등을 선별할 수 있도록 했습니다. 식당이니까.. 음료도 있고 음식도 있고 에피타이져도 있고 하겠죠? (지금은 음료만 됩니다 ㅠ_ㅠ) makeOrder()는 해당 Command 객체의 execute() 메소드를 호출하게 하는겁니다.

말로 설명하려니 참 힘듭니다 'ㅡ';;; 이건 커맨드 패턴의 클래스 다이어그램입니다. 제가 만든것과 비교를 해봅시다!

사용자 삽입 이미지
그 -_-;; 누가 더 잘했냐 비교하나는게 아니구요 ㅎㅎ 잘 살펴보시면 이런 내용입죠...
실제로 Receiver와 Invoker와는 아무 상관이 없다는겁니다 -ㅅ-; 둘 간에는 어떠한 연관 관계도 없지요 +_+? 그니까 Command 객체를 통해서 둘간의 통신을 가능하게 한다는 겁니다 ^^ 제가 만든 소스 코드에서는 Receiver는 OrderList 클래스가 되는거구요.. Receiver는 Beverage가 되겠습니다.


소스코드는 아래 있습니다 다운 받으시면 됩니다 +_+;;