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