EX:
class AlertStateContext {
private currentState;
public AlertStateContext()
{
currentState = new Vibration();
}
public setState(state)
{
currentState = state;
}
public alert()
{
currentState.alert(this);
}
}
class Vibration {
public alert(AlertStateContext ctx)
{
System.out.println("vibration...");
}
}
class Silent {
public void alert(AlertStateContext ctx)
{
System.out.println("silent...");
}
}
function run() {
AlertStateContext stateContext = new AlertStateContext();
stateContext.alert(); // vibration...
stateContext.alert(); // vibration...
stateContext.setState(new Silent());
stateContext.alert(); // silent...
stateContext.alert(); // silent...
stateContext.alert(); // silent...
}
run();