상태를 별도의 클래스로 캡슐화한 다음 현재 상태를 나타내는 객체에게 행동을 위임하는 패턴. 내부 상태가 바뀜에 따라서 행동을 바꿀 수 있음.
Strategy Pattern은 전략 객체(행동)을 변경하는 방식이고 State Pattern은 상태에 따라 전략 객체(행동)을 미리 정의해 놓고 상태를 변경하는 방식. 유동적으로 행동을 변경해야 한다면 Strategy Pattern을 여러 가지 경우의 수 중에서 상황에 따라 선택해야 한다면 State Pattern을 사용하면 좋을 것 같다.
프론트엔드 개발을 하는 개발자들에겐 아주 익숙한 패턴. React, Flutter Bloc/Provider Pattern 등... 바이블 같이 여겨지는 패턴이다.