Monday, January 2, 2012

head first design pattern 4

  • state pattern : 스테이트 패턴을 이용하면 객체의 내부 상태가 바뀜에 따라서 객체의 행도응ㄹ 바꿀 수 있다. 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다.
    • 예제 : 뽑기 기계가 있다. 뽑기 기계는 4가지 상태(동전 있음, 동전 없음, 알맹이 판매, 알맹이 매진) 가 있고 각 상태를 전환하기 위한 행동(손잡이 돌림, 동전 반환, 동전 투입, 알맹이 내보냄)이 있다. 이를 코딩하라
    • 단순 답변 : 각 상태를 나타내는 상수를 정적 변수에 저장한다. 그리고 행동을 메소드로 표현해서 if문을 사용해서 상태에 맞는 각 행동을 취한다. 만약에 10번중에 한번은 특별 당첨으로 2개의 뽑기가 나온다는 기능을 확장하려 한다. 이러면 단순 답변의 코드를 전부 뜯어 고쳐야 한다.
    • state pattern : 상태를 나타내는 state 인터페이스를 정의 하고 이를 구현하는 구상 클래스들에서 각 상태에 따른 행동을 정의한다. context는 state를 구성으로 갖고(맴버 변수) 이 상태를 나타내는 맴버 함수에서 state 객체의 메소드를 호출한다.
  • proxy pattern : 어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴
    • 예제 : 클라이언트에서 서버에 특정 작업(메소드)를 호출하여 결과값을 받을때