닭발개발

[헤드퍼스트 디자인패턴] 33일차. 440-452pg 본문

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

[헤드퍼스트 디자인패턴] 33일차. 440-452pg

D269 2023. 6. 7. 16:45
728x90

 

 

33일차


헤드퍼스트 디자인패턴 [6주차_수요일]
440-452pg


요약


**CHAPTER 10. 객체의 상태 바꾸기 (feat. 상태패턴)**
전략패턴과 상태패턴은 꽤나 다르지만 밑 바탕의 설계는 거의 같다. 어릴적 헤어진 쌍둥이처럼

[ 상태 패턴(State Pattern) 정의 ] 

  • 상태 패턴을 사용하면 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있다.
    • 상태를 별도의 클래스로 캡슐화한 다음 현재 상태를 나타내는 객체에게 행동을 위임하므로 내부 상태가 바뀔 때 행동이 달라지게 된다는 사실을 쉽게 알 수 있다. 
  • 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다.

[ 상태 패턴 vs 전략 패턴 ]

상태 패턴상태 객체에 일련의 행동이 캡슐화 된다.
Context 객체를 생성할 때 초기 상태를 지정해줘도 되지만 그렇게 해도 그 후로는 그 Context 객체가 알아서 자기 상태를 변경한다.
Context 객체는 미리 정해진 상태 전환 규칙에 따라 알아서 자기 상태를 변경한다. -> 따라서 원래 상황에 맞게 상태를 바꾸는 걸 염두에 둔 디자인.
전략 패턴

어떤 클래스의 인스턴스를 만들고 그 인스턴스에게 어떤 행동을 구현하는 전략 객체를 건내준다.
객체가 상태를 변경하는 것을 장려하지 않음
객체에서 어떤 전략을 사용하는지는 직접 결정한다.

 
 
[ 정상성 점검(sanity check) ]
- 최종 프로젝트를 납품하기 전 마지막으로 체크해야 할 사항 점검하기.
(중복된 코드, 항상 호출되는 메소드에 대해,...)
 
 
 
 
 
 
 
 

728x90
반응형