State: Alter an object’s behavior when its state changes. Allow an
object to alter its behavior when its internal state changes. The object
will appear to change its class.
In side of context:
keep a reference of current state.
delegate all action by current state.
keep static const state as how many states you have
In side of concreteState:
manage of current state
transmission of states.
In all concreteState, you need to define all the actions, even some
actions is meanless, just leave it empty.