헷갈려서 다시 정리
이전 정리 : https://jaehhh.tistory.com/58
공통점
- 인터페이스를 사용함으로써 Concrete Class를 캡슐화한다.
- Concrete Class : 구현클래스(추상클래스가 아닌 모든 클래스)
- 인터페이스(전략, 상태)만을 인자로 받는다.
차이점
표면상(코드상)으로는 다를게 별로 없다. 구분한 이유가 뭘까?
상태패턴
상태에 따른 로직 끝에 , setState(new State()) 를 호출함으로써 상태를 스스로 변환할 수 있다.
- 예시
- 현재 선풍기 Off 상태
- 강풍 버튼 누르기 → On 상태로 전이
- 다시 강풍 누르기 → 상태 전이 없음
- 다양한 상태변화
- if, else가 많아 분기점이 많은경우
- enum으로 상태를 관리할 수 있다.
전략패턴
전략패턴의 경우 외부에서 데이터의 입력이 필요하다.
즉, 어떤 Concrete Class를 할당할 지 client 혹은 사용자가 결정한다.
- 행동을 소유한 객체를 실행 시에 선택할 수 있게하여 상황에 맞는 행동을 하도록(다양한 변화X)
'공부 > Java' 카테고리의 다른 글
자바의 입출력(I/O) 및 File(경로/읽기)을 알아보자 (0) | 2022.09.08 |
---|---|
IntelliJ 디버깅 해보기 (0) | 2022.05.06 |
SpringBoot에 원하는 오류페이지로 설정하기 (0) | 2022.05.06 |
[JAVA] 한번에 두 개 이상 테스트하기 (0) | 2022.04.30 |
전략패턴 vs 상태패턴 (0) | 2022.04.26 |
댓글