public static void Main(string[] args) { var copyContext1 = new CopyMachineContext(); copyContext1.PutMoney(30); copyContext1.ChooseDevice(Device.FlashCard); copyContext1.ChooseDocument("lol"); copyContext1.PrintDocument(); copyContext1.ChooseDocument("kek"); copyContext1.PrintDocument(); Console.WriteLine(copyContext1.TakeChange()); var copyContext2 = new CopyMachineContext(); copyContext2.PutMoney(5); copyContext2.ChooseDevice(Device.FlashCard); copyContext2.ChooseDocument("lol"); try { copyContext2.PrintDocument(); } catch (Exception e) { Console.WriteLine(e.Message); } }
public override int TakeChange(CopyMachineContext context) { var change = context.Money; context.Money = 0; context.Device = Device.NotSelected; context.Document = ""; context.State = new PrintDocumentState(); return(change); }
public override void PrintDocument(CopyMachineContext context) { if (context.Money - context.Price > 0) { context.Money -= context.Price; context.State = new ChooseDocumentState(); } else { throw new Exception("Not enough money"); } }
public override int TakeChange(CopyMachineContext context) { throw new System.NotImplementedException(); }
public override void ChooseDocument(CopyMachineContext context, string document) { context.Document = document; context.State = new PrintDocumentState(); }
public virtual void PutMoney(CopyMachineContext context, int money) { throw new Exception(MessageError); }
public virtual int TakeChange(CopyMachineContext context) { context.State = new PutMoneyState(); return(0); }
public virtual void PrintDocument(CopyMachineContext context) { throw new Exception(MessageError); }
public virtual void ChooseDocument(CopyMachineContext context, string document) { throw new Exception(MessageError); }
public virtual void ChooseDevice(CopyMachineContext context, Device device) { throw new Exception(MessageError); }
public override void ChooseDevice(CopyMachineContext context, Device device) { context.Device = device; context.State = new ChooseDocumentState(); }
public override void PutMoney(CopyMachineContext context, int money) { context.Money = money; context.State = new ChooseDeviceState(); }