public decimal CalculateDiscount(Order order) { //1.Predykat if (canDiscountStrategy.CanDiscount(order)) { // 2. Wartosc rabatu return(calculateDiscountStrategy.CalculateDiscount(order)); } else { return(noDiscount); } }
/// <summary> /// oblicza rabat dla danej strategii /// </summary> /// <param name="order"></param> /// <returns></returns> public decimal CalculateDiscount(Order order) { if (order == null) { throw new ArgumentNullException(nameof(order)); } if (order.Total <= 0) { throw new ArgumentOutOfRangeException(nameof(order.Total)); } if (canDiscountStrategy.CanDiscount(order)) { Thread.Sleep(TimeSpan.FromMilliseconds(100)); return(calculateDiscountStrategy.CalculateDiscount(order)); } else { return(0m); } }