본문 바로가기
공부/Java

전략패턴과 상태패턴의 공통점과 차이점

by JERO__ 2022. 6. 6.

헷갈려서 다시 정리

이전 정리 : https://jaehhh.tistory.com/58

 

전략패턴 vs 상태패턴

결론 전략패턴 : 한 번 인스턴스 생성하고 난 뒤, 상태가 거의 바뀌지 않을 때 사용 상태패턴 : 한 번 인스턴스 생성하고 난 뒤, 상태가 빈번하게 바뀔 때 사용 디자인패턴 (소프트웨어) 디자인 + (

jaehhh.tistory.com

 

공통점

  • 인터페이스를 사용함으로써 Concrete Class를 캡슐화한다.
    • Concrete Class : 구현클래스(추상클래스가 아닌 모든 클래스)
  • 인터페이스(전략, 상태)만을 인자로 받는다.

차이점

표면상(코드상)으로는 다를게 별로 없다. 구분한 이유가 뭘까?

상태패턴

상태에 따른 로직 끝에 , setState(new State()) 를 호출함으로써 상태를 스스로 변환할 수 있다.

  • 예시
    1. 현재 선풍기 Off 상태
    2. 강풍 버튼 누르기 → On 상태로 전이
    3. 다시 강풍 누르기 → 상태 전이 없음
  • 다양한 상태변화
    • if, else가 많아 분기점이 많은경우
    • enum으로 상태를 관리할 수 있다.

전략패턴

전략패턴의 경우 외부에서 데이터의 입력이 필요하다.

즉, 어떤 Concrete Class를 할당할 지 client 혹은 사용자가 결정한다.

  • 행동을 소유한 객체를 실행 시에 선택할 수 있게하여 상황에 맞는 행동을 하도록(다양한 변화X)

댓글