728x90
반응형
0. 디자인 패턴은 무엇이고 왜 사용하는가?
- 이러한 상황에서는 이런 패턴을 사용하라.
- 이러한 상황에서 왜 이 패턴을 쓰는지 명확하게 알아야 한다.
- 프로그램 구조 파악 용이, 의사소통 좋아질 수 있음.
1. State 패턴 개념
- 객체 내부의 상태에 따라 객체의 동작 방식이 달라지는 패턴
- 하나의 인터페이스를 두고 각 객체들은 이를 구현하여 상태에 따라 다른 행위를 하는 패턴
public interface NumState {
void test();
}
public class OneState implements NumState (
void test() {
xxx
}
)
public class TwoState implements NumState {
void test() {
}
}
public class Main {
// OneState.test();
// TwoState.test();
}
2. State 패턴 필요성/장점
- 자바 패턴을 공부할 때는 개념이 있다는 것을 아는 것으로만 끝내서는 안됨. 항상 이게 왜 이상황에서 왜 이렇게 쓰는지를 알아야 함.
- State 패턴의 특징을 한 마디로 정의하면 동일한 기능이 상태에 따라 달라지는 것.
- 즉, interface 로 동일한 기능을 정의해놓고 상태 구현체만 변경해주면 내부 동작이 달라지는 곳에 쓰면 좋겠지.
- 예를 들면, if 분기문을 태울 때, 다음과 같이 쓰면 좋을 것 같다.
- 아래와 같이 인터페이스만 선언해두고 바깥에서 구현체만 변경해주면 확장성을 보장받을 수 있음.
public void statePatternTest(...) {
NumState numState = xxx;
numState.test();
}
3. State 패턴 단점
- StatePattern 을 쓴다는 얘기는 객체를 만들어야 된다는 얘기고.
- if, else vs StatePattern 중 어떤 것이 더 낫냐는 질문에 본인이 답할 수 있어야 함.
- 간단한거고 확장이 별로 없다면 if, else 를 쓰고.
- 복잡하고 확장성도 높을 것 같다면 StatePattern 을 쓰는 것이 좋을듯 하다.
'Java' 카테고리의 다른 글
java Generic, WildCard 정리 (0) | 2021.03.22 |
---|---|
java ThreadPoolExecutor 설명 (0) | 2021.02.26 |
List 안의 값 중 가장 큰 데이터 출력 (0) | 2021.02.20 |
java main args 에 json parameter 넘기는 방법 (0) | 2021.02.06 |
apache webserver error page customize (0) | 2021.01.24 |
댓글