static void Main(string[] args) { IInventory inventory = new InventoryManager(); IOrderVerify orderVerify = new OrderVerificationManager(); ICosting costManger = new CostManager(); IPaymentGateway paymentGateWay = new PaymentGatewayManager(); ILogistics logistics = new LogisticsManager(); // Creating the Order/Product details OrderDetails orderDetails = new OrderDetails("C# Design Pattern Book", "Simplified book on design patterns in C#", 500, 10, "Street No 1", "Educational Area", 1212, "4156213754" ); // Client Code without Facade. // Updating the inventory. inventory.Update(orderDetails.ProductNo); // Verfying various details for the order such as the shipping address. orderVerify.VerifyShippingAddress(orderDetails.PinCode); // Calculating the final cost after applying various discounts. orderDetails.Price = costManger.ApplyDiscounts(orderDetails.Price, orderDetails.DiscountPercent ); // Going through various steps if payment gateway like card verification, charging from the card. paymentGateWay.VerifyCardDetails(orderDetails.CardNo); paymentGateWay.ProcessPayment(orderDetails.CardNo, orderDetails.Price); // Completing the order by providing Logistics. logistics.ShipProduct(orderDetails.ProductName, string.Format("{0}, {1} - {2}.", orderDetails.AddressLine1, orderDetails.AddressLine2, orderDetails.PinCode)); //Facade OrderOnlineFacade facade = new OrderOnlineFacade(inventory, costManger, logistics, orderVerify, paymentGateWay); facade.FinalizeOrder(orderDetails); Console.ReadLine(); }
private static void OnlineShoppingSystem() { Console.WriteLine(""); Console.WriteLine("================ Online Shopping Without Facade Object ==============="); Console.WriteLine(""); // Creating the Order/Product details OrderDetails orderDetails = new OrderDetails( "C# Design Pattern Book", //Product Name "Simplified book on design patterns in C#", //Description 500, //Price 10, //Discount in % "SF-1, Chitrakut Complex", //Address Line 1 "Nr. Pasha Bhai Park, Gotri, Vadodara, Gujarat, India", //Address Line 2 390007, // Pincode "4156213754" //Card details ); // Updating the inventory. IInventory inventory = new InventoryManager(); inventory.Update(orderDetails.ProductNo); // Verfying various details for the order such as the shipping address. IOrderVerify orderVerify = new OrderVerificationManager(); orderVerify.VerifyShippingAddress(orderDetails.PinCode); // Calculating the final cost after applying various discounts. ICosting costManger = new CostManager(); orderDetails.Price = costManger.ApplyDiscounts(orderDetails.Price, orderDetails.DiscountPercent); // Going through various steps if payment gateway like card verification, charging from the card. IPaymentGateway paymentGateWay = new PaymentGatewayManager(); paymentGateWay.VerifyCardDetails(orderDetails.CardNo); paymentGateWay.ProcessPayment(orderDetails.CardNo, orderDetails.Price); // Completing the order by providing Logistics. ILogistics logistics = new LogisticsManager(); logistics.ShipProduct(orderDetails.ProductName, $"{orderDetails.AddressLine1}, {orderDetails.AddressLine2} - {orderDetails.PinCode}."); }