구분
전략(Strategy) 패턴 : 한 번 인스턴스를 생성하고 나면, 상태가 거의 바뀌지 않는 경우에 사용한다.
상태(State) 패턴 : 한 번 인스턴스를 생성하고 난 뒤, 상태를 바꾸는 경우가 빈번한 경우에 사용한다.
공통점
인터페이스를 사용함으로써 캡슐화를 한다. 따라서 Context Class에서 인터페이스를 인자로 받아와서 그대로 메서드를 수행하는 코드가 있다. 즉 두 패턴 모두 실행중인 클래스의 영향을 받지 않고 유연한 변환이 가능하다.

_두 패턴의 기본 구조_
🦊 표면상으로는 같으나 굳이 분리를 한 이유는 다음과 같다.
차이
State는 로직의 끝에, setState(new State())를 호출해 스스로 변환할 수 있다.
Strategy의 경우 외부에서 데이터 입력이 필요하다. (카카오페이, 네이버페이)
따라서 다음과 같이 정리할 수 있다.
정리
Strategy Pattern : 행동(알고리즘)을 소유한 객체를 실행 시에 선택할 수 있게 상황에 맞는 행동을 하는데 유용
=> 다양한 알고리즘이 사용되는 경우 고려
State Pattern : 다양한 상태변화가 아주 복잡한 로직을 제어하는데 유용
=> if, else 문에 의한 분기점이 많아 복잡한 경우 고려
ver2.0
해당 글은 저의 공부를 낙서하듯 적어놓은 것이기 때문에 정확하지 않을 수 있습니다! 혹시 틀리거나 다른 의견이 있다면 댓글 주시면 감사하겠습니다!