제1 8 편 디자인 모델 - 상태 모델

정의: 대상 이 내부 상태 가 바 뀌 었 을 때 행동 을 바 꿀 수 있 도록 허용 합 니 다. 대상 이 클래스 를 수정 한 것 처럼 보 입 니 다.
정의:
package state_model;

/**
 * @author naivor
 *		    -   
 */
public class StateModel {
	public static void main(String[] args) {
		Context context=new Context(new ConcreteStateA());
		context.request();
		context.request();   //       ,      
	}
}

/**
 * 
 * @author naivor
 *		    -     
 */
abstract class State{
	public abstract void handle(Context context);
}
/**
 * 
 * @author naivor
 *		    -  A 
 */
class ConcreteStateA extends State{
	@Override
	public void handle(Context context) {
		context.setState(new ConcreteStateB());
	}
}
/**
 * 
 * @author naivor
 *		    -  B 
 */
class ConcreteStateB extends State{
	@Override
	public void handle(Context context) {
		context.setState(new ConcreteStateA());
	}
}
/**
 * 
 * @author naivor
 *		    -     
 */
class Context{
	private State state;
	public Context(State state) {
		this.state=state;
	}
	
	public State getState() {
		return state;
	}

	public void setState(State state) {
		this.state = state;
	}

	public void request(){
		state.handle(this);
	}
}

좋은 웹페이지 즐겨찾기