Monday, 29 October 2012

The State pattern




The state pattern, which closely resembles Strategy Pattern, is a behavioral software design pattern, also known as the objects for states pattern. This pattern is used in computer programming to represent the state of an object. This is a clean way for an object to partially change its type at runtime



interface State {
void writeName(StateContext stateContext, String name);
}
 
class StateA implements State {
public void writeName(StateContext stateContext, String name){
System.out.println(name.toLowerCase());
                stateContext.setState(new StateB());
}
}
 
class StateB implements State {
private int count=0;
public void writeName(StateContext stateContext, String name){
System.out.println(name.toUpperCase());
// change state after StateB's writeName() gets invoked twice
if(++count>1){
                        stateContext.setState(new StateA());
}
}
}

public class StateContext {
private State myState;
public StateContext(){
                setState(new StateA());
}
 
// normally only called by classes implementing the State interface
public void setState(State newState){
this.myState= newState;
}
 
public void writeName(String name){
this.myState.writeName(this, name);
}
}
public class TestClientState {
public static void main(String[] args){
                StateContext sc =new StateContext();
                sc.writeName("Monday");
                sc.writeName("Tuesday");
                sc.writeName("Wednesday");
                sc.writeName("Thursday");
                sc.writeName("Saturday");
                sc.writeName("Sunday");
}
}
According to the above code, the output of main() from TestClientState should be:
monday
TUESDAY
WEDNESDAY
thursday
SATURDAY
SUNDAY
 
Kindly provide your valuable feedback in comment box. 

No comments:

Post a Comment