Exemplo n.º 1
0
        public static void Test()
        {
            Customer customer = new Customer("Anna", "Kowalska");
            Order    order    = CreateOrder(customer);

            ICanDiscountStrategy canDiscountStrategy = new HappyHoursCanDiscountStrategy(TimeSpan.Parse("9:30"), TimeSpan.Parse("16"));
            IDiscountStrategy    discountStrategy    = new PercentageDiscountStrategy(0.1m);

            // PMC> Install-Package Newtonsoft.Json
            string            jsonDiscountStrategy = JsonConvert.SerializeObject(discountStrategy);
            IDiscountStrategy discountStrategy2    = JsonConvert.DeserializeObject <PercentageDiscountStrategy>(jsonDiscountStrategy);

            OrderDiscountCalculator discountCalculator = new OrderDiscountCalculator(canDiscountStrategy, discountStrategy);

            decimal discount = discountCalculator.CalculateDiscount(order);
        }
        private static void SkinColorOrderStrategyCalculatorTest2()
        {
            Customer customer = new Customer("Jan", "Nowak", ConsoleColor.Red);

            Order order = CreateOrder(customer);

            // IDiscountStrategy discountStrategy = new HappyHoursPercentageDiscountStrategy(TimeSpan.Parse("9:00"), TimeSpan.Parse("17:00"), 0.1m);

            ICanDiscountStrategy       canDiscountStrategy = new SkinColorDiscountStrategy(ConsoleColor.Red);
            ICalculateDiscountStrategy calculateDiscount   = new PercentageDiscountStrategy(0.1m);

            SecondOrderCalculator calculator = new SecondOrderCalculator(canDiscountStrategy, calculateDiscount);
            decimal discount = calculator.CalculateDiscount(order);

            Console.WriteLine($"Original amount: {order.Amount:C2} Discount: {discount:C2}");
        }