コード例 #1
0
        public int GiveChange(CopyContext copyContext)
        {
            int i = Balance;

            Balance           = 0;
            copyContext.state = new PayState();
            return(i);
        }
コード例 #2
0
 public override void Pay(CopyContext copyContext, int amount)
 {
     if (amount <= 0)
     {
         return;
     }
     Console.WriteLine($"Баланс: {amount}");
     copyContext.state = new ChooseDeviceState(amount);
 }
コード例 #3
0
 public override void ChooseDevice(CopyContext copyContext, string device)
 {
     if (device.Equals(DEVICE_USB))
     {
         copyContext.state = new ChooseDocFromUSBState(Balance);
         return;
     }
     if (device.Equals(DEVICE_WIFI))
     {
         copyContext.state = new ChooseDocFromWiFiState(Balance);
         return;
     }
     throw new Exception("Invalid device");
 }
コード例 #4
0
 public override void PrintDoc(CopyContext copyContext)
 {
     Console.WriteLine($"Печатаем с {DeviceType}, документ с именем {DocumentName}");
     Balance -= copyContext.price;
     if (Balance < copyContext.price)
     {
         Console.WriteLine($"Осталось денег: {Balance}, внесите ещё");
         copyContext.state = new PayState(Balance);
     }
     else
     {
         Console.WriteLine($"Осталось денег: {Balance}");
         ReturnOneStateBack(copyContext);
     }
 }
コード例 #5
0
        static void Main(string[] args)
        {
            CopyContext copyContext = new CopyContext();

            try
            {
                copyContext.Pay(10);
                copyContext.ChooseDevice(ChooseDeviceState.DEVICE_WIFI);
                copyContext.ChooseDoc("Hello.doc");
                copyContext.PrintDoc();
            } catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

            Console.ReadLine();
        }
コード例 #6
0
 public override void ChooseDevice(CopyContext copyContext, string device)
 {
     throw new Exception("Pay first!");
 }
コード例 #7
0
 protected override void ReturnOneStateBack(CopyContext copyContext)
 {
     copyContext.state = new ChooseDocFromWiFiState(Balance);
 }
コード例 #8
0
 public override void ChooseDoc(CopyContext copyContext, string name)
 {
     throw new Exception("Choose device first!");
 }
コード例 #9
0
 public override void PrintDoc(CopyContext copyContext)
 {
     throw new Exception("Pay first!");
 }
コード例 #10
0
 public abstract void ChooseDoc(CopyContext copyContext, string name);
コード例 #11
0
 public abstract void PrintDoc(CopyContext copyContext);
コード例 #12
0
 public abstract void Pay(CopyContext copyContext, int amount);
コード例 #13
0
 public abstract void ChooseDevice(CopyContext copyContext, string device);
コード例 #14
0
 public override void PrintDoc(CopyContext copyContext)
 {
     throw new Exception("Choose device first!");
 }
コード例 #15
0
 protected abstract void ReturnOneStateBack(CopyContext copyContext);
コード例 #16
0
 public override void Pay(CopyContext copyContext, int amount)
 {
     throw new Exception("You already paid!");
 }
コード例 #17
0
 public override void ChooseDoc(CopyContext copyContext, string name)
 {
     copyContext.state = new PrintDocFromWiFiState(Balance, name);
 }
コード例 #18
0
 public override void ChooseDoc(CopyContext copyContext, string name)
 {
     throw new Exception("You already chose!");
 }