Objects with a lifecycle, like a vending machine or an order, end up with the same switch on status repeated in every method. The State pattern puts each state in its own class, and the object hands every event to its current state, which also decides the next one. Use it when you can draw a clear state diagram, such as an elevator that is idle, moving or has doors open. If the client chooses the behaviour instead of the states moving themselves, it is Strategy.