The state pattern is used to keep track of the state of a process. In this video I'll use an order on Amazon.com as an example.
Each order moves to a specific process and the user has limited options at each state. For instance: you cannot cancel an order once it has been shipped. But you can cancel it at previous states.
Source code used in this video can be found on GitHub.