일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
Tags
- Project
- 자바
- JPA
- coding test
- AWS
- 스프링
- MariaDB
- gradle
- 코테
- 백준
- SpringBoot
- 취준생
- Controller
- 코딩테스트
- 팀프로젝트
- ps
- Java
- 프로젝트
- 디자인패턴
- 공유DB
- spring boot
- 자취
- MVC
- React
- IntelliJ
- javascript
- spring
- jdk11
- 입출력
- JDK
Archives
- Today
- Total
Tech Collection
[Design Pattern] State Pattern 본문
728x90
반응형
스테이트 패턴
- 객체의 내부 상태가 바뀜에 따라서 객체의 행동을 바꿀 수 있다.
- 마치 객체의 클래스가 바뀌는 것과 같은 결과를 얻을 수 있다.
- 각각의 state들을 class로 구현한다.
- 공통된 행위의 종류를 interface로 빼고, concrete 클래스들이 이를 구현하도록 한다.
- strategy 패턴과의 차이점
- 서브클래스를 만드는 방법을 대신하여 유연성을 극대화하기 위한 용도로 쓰임
- 행동의 변화를 context가 제어
- state는 내부적으로 정의된 state transition에 따라 변경된다.
- 장점
- 여러 개의 if문을 사용하여 현재 state에 따른 행동을 결정하는 것
- 각각의 state를 class로 만들고, 현재 state를 composition하는 방식으로 구현하여 로직에서 달라지는 부분인 각 state의 behavior들을 캡슐화할 수 있다.
- Open-Closed Prinsipal을 잘 지키기 때문에 특정 state의 로직이 변경되거나 새로운 state가 추가되었을 때 유리하다.
- 단점
- 클래스의 수가 많아진다.
728x90
반응형
'Concept > Design Pattern' 카테고리의 다른 글
[Design Pattern] Facade Pattern (0) | 2021.05.30 |
---|---|
[Design Pattern] Adapter Pattern (0) | 2021.05.30 |
[Design Pattern] Decorator Pattern (0) | 2021.05.30 |
[Design Pattern] Factory Pattern (0) | 2021.05.30 |
[Design Pattern] Observer Pattern (0) | 2021.05.30 |