State — object behavior changes with state.
Implementation:
1public interface IState2{3 void Handle(VendingMachine machine);4}56public class IdleState : IState7{8 public void Handle(VendingMachine machine)9 {10 Console.WriteLine("Insert coin");11 machine.SetState(new HasCoinState());12 }13}1415public class HasCoinState : IState16{17 public void Handle(VendingMachine machine)18 {19 Console.WriteLine("Dispensing");20 machine.SetState(new IdleState());21 }22}
Key: State for behavior per state.