State 狀態模式

package com.lonton.designpatterns;

interface State
{
	public void saySomething(StateContext stateContext);
}

class Poor implements State
{

	@Override
	public void saySomething(StateContext sc)
	{
		// TODO Auto-generated method stub
		System.out.println("I'm poor currently, and spend much time working.");
		sc.changeState(new Rich());
	}
	
}

class Rich implements State
{

	@Override
	public void saySomething(StateContext sc)
	{
		// TODO Auto-generated method stub
		System.out.println("I'm rick currently, and play a lot.");
		sc.changeState(new Poor());
	}
	
}

class StateContext
{
	private State curState;
	
	public StateContext()
	{
		curState = new Poor();
	}
	
	public void changeState(State state)
	{
		curState = state;
	}
	
	public void saySomething()
	{
		curState.saySomething(this);
	}
}

public class StateTest
{
	public static void main(String[] args)
	{
		StateContext sc = new StateContext();
		
		sc.saySomething();
		sc.saySomething();
		sc.saySomething();
		sc.saySomething();
	}
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章