示例#1
0
        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);
            }
        }
示例#2
0
        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);
        }
示例#3
0
 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");
     }
 }
示例#4
0
 public override int TakeChange(CopyMachineContext context)
 {
     throw new System.NotImplementedException();
 }
示例#5
0
 public override void ChooseDocument(CopyMachineContext context, string document)
 {
     context.Document = document;
     context.State    = new PrintDocumentState();
 }
示例#6
0
 public virtual void PutMoney(CopyMachineContext context, int money)
 {
     throw new Exception(MessageError);
 }
示例#7
0
 public virtual int TakeChange(CopyMachineContext context)
 {
     context.State = new PutMoneyState();
     return(0);
 }
示例#8
0
 public virtual void PrintDocument(CopyMachineContext context)
 {
     throw new Exception(MessageError);
 }
示例#9
0
 public virtual void ChooseDocument(CopyMachineContext context, string document)
 {
     throw new Exception(MessageError);
 }
示例#10
0
 public virtual void ChooseDevice(CopyMachineContext context, Device device)
 {
     throw new Exception(MessageError);
 }
示例#11
0
 public override void ChooseDevice(CopyMachineContext context, Device device)
 {
     context.Device = device;
     context.State  = new ChooseDocumentState();
 }
示例#12
0
 public override void PutMoney(CopyMachineContext context, int money)
 {
     context.Money = money;
     context.State = new ChooseDeviceState();
 }