책너두 (헤드 퍼스트 디자인 패턴) 33일차 (~452p)

요약

  • 상태 패턴
    • 상태 패턴의 정의
    • 상태 패턴 vs 전략 패턴
    • 보너스 알맹이 당첨 기능 추가하기
    • 디자인 도구상자 안에 들어가야 할 도구들

메모

상태 패턴의 정의

📍 상태 패턴(State Pattern) : 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있음. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있음.

  • State 인터페이스는 모든 구상 상태 클래스의 공통 인터페이스를 정의 함.
    • 모든 상태 클래스에서 같은 인터페이스를 구현하므로, 바꿔가면서 쓸 수 있음
  • Context 클래스에서는 여러 가지 내부 상태가 들어있을 수 있음.
    • 앞에서 살펴본 GumballMachine이 Context에 해당함.
  • ConcreteState 는 Context로 부터 전달된 요청을 자기 나름의 방식으로 구현해서 처리함
    • Context에서 상태를 바꿀 때마다 ConcreteState 를 바꾸므로 행동도 바뀌게 됨.

상태 패턴 vs 전략 패턴

  • 상태 패턴은 상태 객체에 일련의 행동이 캡슐화 됨.
    • 상황에 따라 Context 객체에서 여러 상태 객체 중 한 객체에게 모든 행동을 맡김.
    • 그 객체의 내부 상태에 따라 현재 상태를 나타내는 객체가 바뀌게 되고, 그 결과로 Context 객체의 행동도 자연스럽게 바뀌게 됨.
    • 클라이언트는 상태 객체를 몰라도 됨.
  • 전략 패턴은 일반적으로 클라이언트가 Context 객체에게 어떤 전략 객체를 사용할지를 지정해 줌.
    • 전략 패턴은 주로 실행 시에 전략 객체를 변경할 수 있는 유연성을 제공하는 용도로 쓰임.

보너스 알맹이 당첨 기능 추가하기

  • 10번에 1번 꼴로 당첨되는 알맹이 기능 다시 살펴본다.
    • WinnerState 가 GumballMachine 에 추가됨.
    • WinnerState 가 되기 위한 랜덤 확률은 HasQuaterState에 추가한다.
      • 알맹이를 돌릴때, 확률을 계산해서 WinnerState인지 결정함.

디자인 도구상자 안에 들어가야 할 도구들

  • 상태 패턴 : 내부 상태가 바뀜에 따라 객체의 행동이 바뀔수 있도록 해줌. 마치 객체의 클래스가 바뀌는 것 같은 결과를 얻을 수 있음.

댓글

Designed by JB FACTORY