State Advantages: provides a mechanism to put a specific behavior (e.g. when light is off or light is on) into separate class decouples an object in a particular state from what developer wants to do in a particular state