Skip to content

Latest commit

 

History

History

Folders and files

NameName
Last commit message
Last commit date

parent directory

..
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

README.md

State 패턴(김동석)

패턴 다이어그램

State

"어떤 객체의 상태에 따라 행위가 변경되는 경우 유용한 패턴" (출처:https://refactoring.guru/design-patterns/state)

해결하려는 문제

  1. context의 상태에 따른 처리가 구분되는 경우 해당 구분로직을 context에 하드 코딩하게 되면 경우 확장성이 떨어진다.

특징/용도

  1. 상태를 클래스화 하고 해당 동작들을 넣는다
  2. 원래의 객체(context)는 현재 상태 객체의 참조를 가진다
  3. context는 2개 이상의 상태를 동시에 가질 수는 없다

고려사항

  1. State 패턴은 Strategy 패턴과 유사하다. 주요한 차이점은 상태객체들은 서로의 존재를 아는 반면 Strategy패턴에서는 Strategy간의 관련성은 없다는 것이다(https://refactoring.guru/design-patterns/state)

클래스 다이어그램

State 패턴(김동석)

소스

  1. Context : 상태를 가지고있는 객체(Package.java)
  2. State : Context의 상태(OrderedState.java, DelieveredState.java, ReceivedState.java)

참고