Interface State
{
public void handle (StateMachine statemachine);
}
Class Eat implements State
{
StateMachine Statemachine=null;
public void handle (StateMachine statemachine)
{
System.out.println ("eat");
This.statemachine=statemachine;
This.statemachine.setState (new work ());
This.statemachine.run ();
}
}
Class work implements State
{
StateMachine Statemachine=null;
public void handle (StateMachine statemachine)
{
System.out.println ("work");
This.statemachine=statemachine;
This.statemachine.setState (New Sleep ());
This.statemachine.run ();
}
}
Class Sleep implements State
{
StateMachine Statemachine=null;
public void handle (StateMachine statemachine)
{
System.out.println ("Sleep");
}
}
Class StateMachine
{
Private State state=null;
public void SetState (state State)
{
This.state=state;
}
public void Run ()
{
State.handle (this);
}
}
public class Statepattern
{
public static void Main (string[] args)
{
State eatstate=new Eat ();
StateMachine astatemachine=new statemachine ();
Astatemachine.setstate (eatstate);
Astatemachine.run ();
}
}
17-State pattern for 23 design Patterns in Java