Categories
Algorithms & Design Design Pattern

State Pattern

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

Leave a comment

Design a site like this with WordPress.com
Get started