닭발개발

[헤드퍼스트 디자인패턴] 17일차. 227-239pg 본문

책책책 책을 읽읍시다‼ ver.개발/[ 헤드퍼스트 디자인패턴 ]

[헤드퍼스트 디자인패턴] 17일차. 227-239pg

D269 2023. 5. 17. 11:40
728x90

 

17일차

헤드퍼스트 디자인패턴 [3주차_금요일]

227-239pg

요약

CHAPTER 06. 호출 캡슐화하기 (feat. 커맨드 패턴)

메소드 호출을 캡슐화 한다.

 

[ 만능 IOT 리모컨 ]

  • 프로그래밍이 가능한 7개의 슬롯
  • 7개의 슬롯마다 각각 온오프 버튼이 있다.
  • 마지막으로 누른 버튼의 명령을 취소하는 ‘UNDO’ 버튼이 있다.
  • 리모컨에서 제어해야 하는 객체의 인터페이스 파악
    • 클래스가 많고, 공통 인터페이스가 없다.
    • 앞으로 추가될 클래스도 있음
  • 리모컨 버튼이 눌렸을 때 호출되는 코드와 실제로 일을 처리하는 코드가 분리되어야 한다.

 

[ 커맨트 패턴 ]

  • 어떤 작업을 요청하는 쪽과 그 작업을 처리하는 쪽을 분리할 수 있다.
  • 특정 객체에 관한 특정 작업 요청을 캡슐화해 준다.
  • 객체마을 식당 예시
      1. 고객이 종업원에게 주문을 한다. createOrder()
      1. 종업원은 “주문들어왔어요!” 전달. takeOrder(), orderUp()
      1. 주방장이 주문대로 음식 준비 makeBurger(), makeShake()
  • 커맨트 패턴 다이어그램
      1. 클라이언트가 command 객체 생성 : createCommandObject()
      • command 객체에는 행동(execute)과 리시버 정보가 같이 들어있다.
      • execute() : 행동을 캡슐화 하며, 리시버에 있는 특정 행동을 처리한다.
      1. 클라이언트는 Invoker 객체의 setCommand() 메소드를 호출, 이 때 command 객체를 넘겨줌: setCommand()
      • 인보커는 커맨드 객체가 나중에 쓰일 때까지 보관함.
      1. 인보커에서 커맨드 객체의 execute() 메소드 호출하면
      1. 리시버에 있는 행동 메소드가 호출된다.

발췌

💡 [ 커맨트 패턴 ]
어떤 작업을 요청하는 쪽과 그 작업을 처리하는 쪽을 분리할 수 있다.
특정 객체에 관한 특정 작업 요청을 캡슐화해 준다.

 

 

 

728x90
반응형