상태 패턴
참가자들
현재 상태를 정의하는 ConcreteState 서브클래스의 인스턴스를 유지합니다.
암호
public class Main {
public static void main(String[] args) {
Context c = new Context(new ConcreteStateA());
c.request();
c.request();
c.request();
c.request();
}
}
public interface State {
void handle(Context context);
}
public class ConcreteStateA implements State {
@Override
public void handle(Context context) {
context.setState(new ConcreteStateB());
}
}
public class ConcreteStateB implements State {
@Override
public void handle(Context context) {
context.setState(new ConcreteStateA());
}
}
public class Context {
private State state;
public Context(State state) {
setState(state);
}
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
System.out.println("State: " + state.getClass().getSimpleName());
}
public void request() {
state.handle(this);
}
}
산출
State: ConcreteStateA
State: ConcreteStateB
State: ConcreteStateA
State: ConcreteStateB
State: ConcreteStateA
eidherjulian61
/
디자인 패턴
주요 디자인 패턴
eidher ・ 2020년 9월 27일 ・ 1분 읽기
#designpatterns
#creational
#structural
#behavioral
Reference
이 문제에 관하여(상태 패턴), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/eidher/state-pattern-3kki
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
public class Main {
public static void main(String[] args) {
Context c = new Context(new ConcreteStateA());
c.request();
c.request();
c.request();
c.request();
}
}
public interface State {
void handle(Context context);
}
public class ConcreteStateA implements State {
@Override
public void handle(Context context) {
context.setState(new ConcreteStateB());
}
}
public class ConcreteStateB implements State {
@Override
public void handle(Context context) {
context.setState(new ConcreteStateA());
}
}
public class Context {
private State state;
public Context(State state) {
setState(state);
}
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
System.out.println("State: " + state.getClass().getSimpleName());
}
public void request() {
state.handle(this);
}
}
State: ConcreteStateA
State: ConcreteStateB
State: ConcreteStateA
State: ConcreteStateB
State: ConcreteStateA
eidherjulian61 / 디자인 패턴
주요 디자인 패턴
eidher ・ 2020년 9월 27일 ・ 1분 읽기
#designpatterns
#creational
#structural
#behavioral
Reference
이 문제에 관하여(상태 패턴), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/eidher/state-pattern-3kki텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)