State.java
public abstract class State {
public abstract void doAction();
}
StartState.java
public class StartState extends State {
@Override
public void doAction() {
// TODO Auto-generated method stub
System.out.println("process is in starting state but not started");
}
}
InWorkState.java
public class InWorkState extends State {
@Override
public void doAction() {
// TODO Auto-generated method stub
System.out.println("Process is in In Work state, pls wait for finish.");
}
}
CompleteState.java
public class CompleteState extends State {
@Override
public void doAction() {
// TODO Auto-generated method stub
System.out.println("Process is in Complete state, pls collect output");
}
}
ContextProcess.java
public class ContextProcess {
private State state;
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
}
public void displayStatus(){
state.doAction();
}
}
StatePatternDemo.java
public class StatePatternDemo {
public static void main(String[] args) {
// TODO Auto-generated method stub
//create the context Process Object
ContextProcess process = new ContextProcess();
State start = new StartState();
State inWork = new InWorkState();
State complete = new CompleteState();
//set process to Start
process.setState(start);
process.displayStatus();
//set process to in work
process.setState(inWork);
process.displayStatus();
//set process to complete
process.setState(complete);
process.displayStatus();
}
}
Output
