public override int getDelivery(CopyMachineContext c) { Console.WriteLine($"Получаем сдачу ({c.money}$) и уходим"); c.money = 0; c.device = null; c.state = new RunState(); return(c.money); }
public virtual void Run(CopyMachineContext c) { Console.WriteLine($"Срочно убегаем! Оставляем все!"); c.money = 0; c.DocName = ""; c.device = null; c.state = new RunState(); }
static void Main(string[] args) { var machineContext = new CopyMachineContext(10); //наверное тут лучше использовать StateBuilder //нормальная работа //тогда легче конструировать, нужны будут try/catch machineContext.ChooseDevice(new USB()); machineContext.ChooseDocument("instruction.pdf"); machineContext.PrintDocument(); machineContext.getDelivery(); Console.WriteLine("---------------------------"); //ненормальная работа1 try { machineContext.EnterMoney(5); machineContext.ChooseDevice(new WiFi()); machineContext.ChooseDocument("Введение.docx"); machineContext.PrintDocument(); machineContext.getDelivery(); Console.WriteLine("---------------------------"); } catch (Exception ex) { Console.WriteLine(ex.Message); } machineContext.EnterMoney(9); machineContext.ChooseDevice(new WiFi()); machineContext.ChooseDocument("Введение.docx"); machineContext.PrintDocument(); machineContext.ChooseDocument("Заключение.docx"); machineContext.PrintDocument(); machineContext.getDelivery(); machineContext.Run(); Console.WriteLine("---------------------------"); //ненормальная работа2 try { machineContext.EnterMoney(7); machineContext.ChooseDevice(new USB()); machineContext.ChooseDocument("Док1.docx"); machineContext.PrintDocument(); machineContext.ChooseDocument("Док2.docx"); machineContext.PrintDocument(); machineContext.getDelivery(); } catch (Exception ex) { Console.WriteLine(ex.Message); } machineContext.EnterMoney(7); machineContext.ChooseDevice(new USB()); machineContext.ChooseDocument("Док2.docx"); machineContext.PrintDocument(); machineContext.getDelivery(); Console.Read(); }
public override void ChooseDevice(CopyMachineContext c) { Console.WriteLine($"Выбираем устройство {c.device.type}"); if (c.money < 7) { Console.WriteLine($"Недостаточно средств! Нужно еще {7-c.money} $"); } else { c.state = new DeviceState(); } }
public override void PrintDocument(CopyMachineContext c) { if (c.money != 0) { c.money = c.money - 7; Console.WriteLine($"Печатаем документ {c.DocName}"); c.state = new PrintState(); } else { c.state = new RunState(); throw new Exception("Не хватает средств!"); } }
public override void PrintDocument(CopyMachineContext c) { throw new Exception("Error! Не выбран документ!"); }
public override void ChooseDevice(CopyMachineContext c) { }
public override void ChooseDocument(CopyMachineContext c) { Console.WriteLine($"Выбираем документ {c.DocName}"); c.state = new DocumentState(); }
public override void ChooseDocument(CopyMachineContext c) { throw new Exception("Error!"); }
public override int getDelivery(CopyMachineContext c) { throw new Exception("Error!"); }
public override void ChooseDocument(CopyMachineContext c) { }
public virtual void EnterMoney(CopyMachineContext c) { Console.WriteLine($"Вносим. Текущая сумма {c.money}$"); c.state = new DeviceState(); }
public override void ChooseDevice(CopyMachineContext c) { Console.WriteLine("Подождите, печатается документ..."); }
public abstract void PrintDocument(CopyMachineContext c);
public override void EnterMoney(CopyMachineContext c) { Console.WriteLine($"Вносим деньги ({c.money}) для копирования"); c.state = new EnterMoneyState(); }
public abstract void ChooseDevice(CopyMachineContext c);
public override void Run(CopyMachineContext c) { Console.WriteLine("..."); }
public override void PrintDocument(CopyMachineContext c) { throw new Exception("Бежим куда то"); }
public override int getDelivery(CopyMachineContext c) { throw new Exception("Бежим куда то"); }
public override int getDelivery(CopyMachineContext c) { throw new Exception("Error! Не выбран документ!"); }
public abstract int getDelivery(CopyMachineContext c);
public override void ChooseDevice(CopyMachineContext c) { throw new Exception("Error! Уже выбран документ!"); }
public override void PrintDocument(CopyMachineContext c) { Console.WriteLine("Подождите, печатается документ..."); }
public abstract void ChooseDocument(CopyMachineContext c);
public override void ChooseDevice(CopyMachineContext c) { throw new Exception("Бежим куда то"); }