Пример #1
0
        static void DecoratorExample()
        {
            List <Product> products = new List <Product>
            {
                new Product {
                    Name = "Phone", Price = 587
                },
                new Product {
                    Name = "Tablet", Price = 800
                },
                new Product {
                    Name = "PC", Price = 1200
                }
            };
            var regularOrder = new RegularOrder();

            Console.WriteLine(regularOrder.CalculateTotalOrderPrice(products));
            Console.WriteLine();

            var preOrder = new Preorder();

            Console.WriteLine(preOrder.CalculateTotalOrderPrice(products));
            Console.WriteLine();

            var premiumPreorder = new PremiumPreorder(preOrder);

            Console.WriteLine(premiumPreorder.CalculateTotalOrderPrice(products));
        }
        public void PreOrderDepthFirstTraversal()
        {
            const string result = "ABDECFG";
            // TODO replace me with your implementation of a preorder depth-first traverser
            ITraverser traverser = new Preorder();

            Assert.AreEqual(result, traverser.Traverse(BT));
        }
        /// <summary>
        ///     Enumerates the BST's contents using a specified traversal method.
        /// </summary>
        /// <param name="traversalMethod">The type of traversal to perform.</param>
        /// <returns>An enumerator that provides access to the BST's elements using a specified traversal technique.</returns>
        public virtual IEnumerator <T> GetEnumerator(TraversalMethod traversalMethod)
        {
            // The traversal approaches are defined as public properties in the BST class...
            // This method simply returns the appropriate property.
            switch (traversalMethod)
            {
            case TraversalMethod.Preorder:
                return(Preorder.GetEnumerator());

            case TraversalMethod.Inorder:
                return(Inorder.GetEnumerator());

            default:
                return(Postorder.GetEnumerator());
            }
        }
 public IEnumerator <T> GetEnumerator(TraversalMethod TraversalMethod)
 {
     // The traversal approaches are defined as public properties in the BST class...
     // This method simply returns the appropriate property.
     if (TraversalMethod == TraversalMethod.Preorder)
     {
         return(Preorder.GetEnumerator());
     }
     else if (TraversalMethod == TraversalMethod.Inorder)
     {
         return(Inorder.GetEnumerator());
     }
     else
     {
         return(Postorder.GetEnumerator());
     }
 }
Пример #5
0
        /// <summary></summary>
        public IEnumerator <BinaryTreeNode <T> > GetEnumerator(TraversalMethod method)
        {
            switch (method)
            {
            case TraversalMethod.Postorder:
                return(Postorder.GetEnumerator());

            case TraversalMethod.Inorder:
                return(Inorder.GetEnumerator());

            case TraversalMethod.Levelorder:
                return(Levelorder.GetEnumerator());

            case TraversalMethod.Preorder:
            default:
                return(Preorder.GetEnumerator());
            }
        }
 public CosmosDbOrder(Preorder preOrder, CatalogItem iceCream)
 {
     id               = preOrder.Id;
     User             = preOrder.User;
     Date             = preOrder.Date;
     Status           = preOrder.Status;
     FullAddress      = preOrder.FullAddress;
     LastPosition     = null;
     DeliveryPosition = null;
     Icecream         = new CosmosCatalogItem
     {
         IcecreamId  = iceCream.Id,
         Name        = iceCream.Name,
         Description = iceCream.Description,
         ImageUrl    = iceCream.ImageUrl
     };
     Driver = new CosmosDriver();
 }
Пример #7
0
        /// <summary></summary>
        public IEnumerator <TreeNode <T> > GetEnumerator(TraversalMethod method)
        {
            switch (method)
            {
            case TraversalMethod.Postorder:
                return(Postorder.GetEnumerator());

            case TraversalMethod.Inorder:
                return(Inorder.GetEnumerator());

            case TraversalMethod.Levelorder:
                return(Levelorder.GetEnumerator());

            case TraversalMethod.Children:
                return(this._children.GetEnumerator());

            case TraversalMethod.Path:
                return(Path.GetEnumerator());

            case TraversalMethod.Preorder:
            default:
                return(Preorder.GetEnumerator());
            }
        }
        static void Main(string[] args)
        {
            // Factory Pattern
            var factory = new AirConditioner().ExecuteCreation(Actions.Cooling, 20);

            factory.Operate();
            //---------------------------------------------------------------------

            //Facted Builder Pattern
            var car = new CarBuilderFacade()
                      .Info
                      .WithColor("Black")
                      .WithNumberOfDoors(4)
                      .WithType("BMW")
                      .Built
                      .AtAddress("Address")
                      .InCity("Alexandria")
                      .Build();

            Console.WriteLine(car.ToString());

            //------------------------------------------------------------------------
            // Composite Pattern
            var phone = new SingleGift("Phone", 256);

            phone.CalculateTotalPrice();


            //composite gift
            var rootBox  = new CompositeGift("RootBox", 0);
            var truckToy = new SingleGift("TruckToy", 289);
            var plainToy = new SingleGift("PlainToy", 587);

            rootBox.Add(truckToy);
            rootBox.Add(plainToy);
            var childBox   = new CompositeGift("ChildBox", 0);
            var soldierToy = new SingleGift("SoldierToy", 200);

            childBox.Add(soldierToy);
            rootBox.Add(childBox);

            Console.WriteLine($"Total price of this composite present is: {rootBox.CalculateTotalPrice()}");
            //-----------------------------------------------------------------------
            // Decorator Pattern
            var regularOrder = new RegularOrder();

            Console.WriteLine(regularOrder.CalculateTotalOrderPrice());
            Console.WriteLine();

            var preOrder = new Preorder();

            Console.WriteLine(preOrder.CalculateTotalOrderPrice());
            Console.WriteLine();

            var premiumPreorder = new PremiumPreorder(preOrder);

            Console.WriteLine(premiumPreorder.CalculateTotalOrderPrice());

            //---------------------------------------------------------------------
            // Strategy Pattern

            var reports = new List <DeveloperReport>
            {
                new DeveloperReport {
                    Id = 1, Name = "Dev1", Level = DeveloperLevel.Senior, HourlyRate = 30.5, WorkingHours = 160
                },
                new DeveloperReport {
                    Id = 2, Name = "Dev2", Level = DeveloperLevel.Junior, HourlyRate = 20, WorkingHours = 120
                },
                new DeveloperReport {
                    Id = 3, Name = "Dev3", Level = DeveloperLevel.Senior, HourlyRate = 32.5, WorkingHours = 130
                },
                new DeveloperReport {
                    Id = 4, Name = "Dev4", Level = DeveloperLevel.Junior, HourlyRate = 24.5, WorkingHours = 140
                }
            };

            var calculatorContext = new SalaryCalculator(new JuniorDevSalaryCalculator());
            var juniorTotal       = calculatorContext.Calculate(reports);

            Console.WriteLine($"Total amount for junior salaries is: {juniorTotal}");

            calculatorContext.SetCalculator(new SeniorDevSalaryCalculator());
            var seniorTotal = calculatorContext.Calculate(reports);

            Console.WriteLine($"Total amount for senior salaries is: {seniorTotal}");

            Console.WriteLine($"Total cost for all the salaries is: {juniorTotal + seniorTotal}");


            Console.Read();
        }