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()); } }
/// <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(); }
/// <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(); }