✔︎ 행위를 클래스로 캡슐화해 동적으로 행위를 자유롭게 바꿀 수 있게 해주는 패턴
✔︎ 특정 컨텍스트에서 알고리즘을 별도로 분리하는 설계 방법을 의미
✔︎ 전략(비즈니스 로직 or 알고리즘)을 쉽게 바꿀 수 있도록 해주는 디자인 패턴
✔︎ 작업을 여러 객체로 어떻게 분배하면서 객체 사이의 결합도를 최소화 시키는 것에 초점
✔︎ 상태를 객체화하여 상태가 행동을 할 수 있도록 위임하는 패턴
✔︎ 객체의 상태를 클래스로 선언 & 클래스에서는 해당 상태에서 할 수 있는 행위들을 메서드로 정의 & 각 상태 클래스들을 인터페이스로 캡슐화
State 패턴은 인터페이스를 사용하여 클래스들을 캡슐화한다는 점과 Context 클래스는 이러한 인터페이스를 사용한다는 점과 Strategy 패턴과 굉장히 유사하다. 하지만 Strategy 패턴은 Context 클래스에서 특정 객체를 지정해주는 반면 State 패턴은 외부의 개입 없이 객체 내부에서 현재 상태에 따라 Context 객체의 멤버 상태 객체를 변경하여 사용한다.
+(내용 추가)
strategy: 구성을 이용하여 상속을 대체
state: 구성을 이용하여 코드내의 조건문들을 대체