java State pattern 실습해보기
오늘은 자바로 state 패턴을 실습해보았습니다.
기능을 메소드로 묶어든 뒤, 객체의 속성에 따라 객체의 메소드를 변화줄 수 있습니다.
if문이 계속 바꿔야되는 상황에서 이 패턴이 쓰인다고 합니다.
코드
on과 off로 상태를 변화하면서 기능도 변화시킵니다.
public class state {
IState State;
IState test_state1 = new IState() {
@Override
public void on() {
System.out.println("on");
State = test_state2;
}
@Override
public void off() {
System.out.println("none");
}
};
IState test_state2 = new IState() {
@Override
public void on() {
System.out.println("none");
}
@Override
public void off() {
System.out.println("off");
State = test_state1;
}
};
public state() {
State = test_state1;
}
public void on() {
State.on();
}
public void off() {
State.off();
}
}
interface IState {
void on();
void off();
}
test_state1와 test_state2의 상태를 정의하면서 기능 메소드는 인터페이스로 정의합니다.
정의한 상태 객체에서 인터페이스를 오버라이드라여 구체화합니다.
상태에 변화를 줄 기능 구현으로 다른 상태로 넘어갈 코드를 작성합니다.
public class Main {
public static void main(String[] args) {
state test = new state();
test.off();
test.on();
test.on();
test.off();
test.off();
}
}
메인 클래스에서 상태 객체를 만들어서 on, off로 각각의 상태로 넘어갑니다.
Written on February 17, 2018