[Coding] '전략(Strategy) 패턴'과 '상태(State) 패턴'의 차이

Jung Geun Oh·2024년 9월 11일
0

Coding

목록 보기
3/4

구분

전략(Strategy) 패턴 : 한 번 인스턴스를 생성하고 나면, 상태가 거의 바뀌지 않는 경우에 사용한다.

상태(State) 패턴 : 한 번 인스턴스를 생성하고 난 뒤, 상태를 바꾸는 경우가 빈번한 경우에 사용한다.


공통점

인터페이스를 사용함으로써 캡슐화를 한다. 따라서 Context Class에서 인터페이스를 인자로 받아와서 그대로 메서드를 수행하는 코드가 있다. 즉 두 패턴 모두 실행중인 클래스의 영향을 받지 않고 유연한 변환이 가능하다.

_두 패턴의 기본 구조_

🦊 표면상으로는 같으나 굳이 분리를 한 이유는 다음과 같다.


차이

State는 로직의 끝에, setState(new State())를 호출해 스스로 변환할 수 있다.

Strategy의 경우 외부에서 데이터 입력이 필요하다. (카카오페이, 네이버페이)


따라서 다음과 같이 정리할 수 있다.

정리


Strategy Pattern : 행동(알고리즘)을 소유한 객체를 실행 시에 선택할 수 있게 상황에 맞는 행동을 하는데 유용

=> 다양한 알고리즘이 사용되는 경우 고려


State Pattern : 다양한 상태변화가 아주 복잡한 로직을 제어하는데 유용

=> if, else 문에 의한 분기점이 많아 복잡한 경우 고려

ver2.0

해당 글은 저의 공부를 낙서하듯 적어놓은 것이기 때문에 정확하지 않을 수 있습니다! 혹시 틀리거나 다른 의견이 있다면 댓글 주시면 감사하겠습니다!

profile
Keep Learning!

0개의 댓글