Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 | 31 |
Tags
- db
- Exception
- 스프링 핵심 기능
- Greedy
- 백준
- JPQL
- JDBC
- kotlin
- pointcut
- 김영한
- jpa
- QueryDSL
- springdatajpa
- Android
- java
- SpringBoot
- Thymeleaf
- 그리디
- http
- AOP
- Proxy
- 자바
- Spring Boot
- 인프런
- Servlet
- spring
- 알고리즘
- 스프링
- 스프링 핵심 원리
- transaction
Archives
- Today
- Total
개발자되기 프로젝트
조건에 따른 상태를 클래스로 표현하여 관리 - State 본문
1. State Pattern?
- 클래스가 하나(변수)의 상태에 따라 그 내부의 여러 메서드의 기능이 바뀐다고 하면 이를 각각의 클래스로 분리한다.
2. 의도 (Intent)와 동기(Motivation)
- 객체의 기능은 상태에 따라 달라질 수 있는데, 이러한 상태가 여러가지이고,
클래스 전반의 모든 기능이 상태에 의존적이라 하면, 상태를 클래스로 표현하는 것이 적절함 - 클래스로 분리하지 않게 되면 상태가 여러가지인 경우 많은 if-else 문이 사용되고
추후 상태가 추가되거나 삭제될 때 수정해야 하는 사항이 너무 많아짐
3. Class diagram
4. 객체 협력 (collaborations)
- Context : ConcreteState의 인스턴스를 관리하고 서로 상태가 바뀌는 순간을 구현할 수 있다.
- State : Context 가 사용할 메서드를 선언한다.
- ConcreateState : 각 상태 클래스가 수행할 State에 선언된 메서드를 구현한다.
5. 중요한 결론 (consequence)
- 상태에 따른 기능을 분리하여 구현
- 새로운 상태가 추가되면 새로운 클래스를 추가한다.
- 각 상태의 switch를 명확하게 구현해 함
- 어느 경우에 어떤 클래스가 호출되는지 정의 필요.
'Java > 디자인 패턴' 카테고리의 다른 글
Memento Pattern (0) | 2021.11.11 |
---|---|
Observer Pattern (0) | 2021.11.11 |
Adapter Pattern (0) | 2021.11.09 |
Composite Pattern (0) | 2021.11.09 |
Decorator (0) | 2021.11.09 |
Comments