Exemple #1
0
        static void Main()
        {
            var commandProcessor = new CommandQueueProcessor
                                        {
                                            Snapshots = new Queue<IMemento>()
                                        };
            var order = new Order
                                        {
                                            List = new List<IProduct>()
                                        };

            var addProductCommand = new AddProductCommand
                                        {
                                            Order = order,
                                            Product = new Product
                                                          {
                                                              Name = "First",
                                                              Count = 10,
                                                              Price = 100,
                                                          }
                                        };
            commandProcessor.AddCommandToExecute(addProductCommand);

            addProductCommand.Product = new Product
                                                 {
                                                     Count = 20,
                                                     Price = 200,
                                                     Name = "Secon"
                                                 };
            commandProcessor.AddCommandToExecute(addProductCommand);

            addProductCommand.Product = new Product
                                            {
                                                Count = 30,
                                                Price = 300,
                                                Name = "Third"
                                            };
            commandProcessor.AddCommandToExecute(addProductCommand);

            commandProcessor.Run();
            commandProcessor.Run();
            commandProcessor.Run();

            var getSumPriceCommand = new GetSumPriceCommand { Order = order };
            commandProcessor.AddCommandToExecute(getSumPriceCommand);

            Console.Write(order.ToString());
            Console.WriteLine(commandProcessor.Run());
            Console.WriteLine("\n");

            commandProcessor.Undo();
            commandProcessor.AddCommandToExecute(getSumPriceCommand);

            Console.Write(order.ToString());
            Console.WriteLine(commandProcessor.Run());
            Console.WriteLine("\n");

            commandProcessor.Undo();
            commandProcessor.AddCommandToExecute(getSumPriceCommand);

            Console.Write(order.ToString());
            Console.WriteLine(commandProcessor.Run());
            Console.WriteLine("\n");
        }
        static void Main(string[] args)
        {
            var commandProcessor = new CommandQueueProcessor
                                        {
                                            Commands = new Queue<ICommand>()
                                        };
            var order = new Order
                                        {
                                            List = new List<IProduct>()
                                        };

            var addFirstProductCommand = new AddProductCommand
                                        {
                                            Order = order,
                                            Product = new Product
                                                          {
                                                              Name = "First",
                                                              Count = 10,
                                                              Price = 100,
                                                              Guid = Guid.NewGuid()
                                                          }
                                        };
            var addSecondProductCommand = new AddProductCommand
                                        {
                                            Order = order,
                                            Product = new Product
                                                          {
                                                              Name = "Secnd",
                                                              Count = 20,
                                                              Price = 200,
                                                              Guid = Guid.NewGuid()
                                                          }
                                        };
            var addThirdProductCommand = new AddProductCommand
                                        {
                                            Order = order,
                                            Product = new Product
                                                          {
                                                              Name = "Third",
                                                              Count = 30,
                                                              Price = 300,
                                                              Guid = Guid.NewGuid()
                                                          }
                                        };
            var getSumPriceCommand = new GetSumPriceCommand { Order = order };

            commandProcessor.AddCommandToExecute(addFirstProductCommand);
            commandProcessor.AddCommandToExecute(addSecondProductCommand);
            commandProcessor.AddCommandToExecute(addThirdProductCommand);

            commandProcessor.Run();
            commandProcessor.Run();
            commandProcessor.Run();

            commandProcessor.AddCommandToExecute(getSumPriceCommand);

            Console.Write(order.ToString());
            Console.WriteLine(commandProcessor.Run());
            Console.WriteLine("-----------------------------------------------------------------------");

            commandProcessor.Undo();
            commandProcessor.AddCommandToExecute(getSumPriceCommand);

            Console.Write(order.ToString());
            Console.WriteLine(commandProcessor.Run());
            Console.WriteLine("-----------------------------------------------------------------------");

            commandProcessor.Undo();
            commandProcessor.AddCommandToExecute(getSumPriceCommand);

            Console.Write(order.ToString());
            Console.WriteLine(commandProcessor.Run());
            Console.WriteLine("-----------------------------------------------------------------------");
        }