public decimal ApplyPromotion(List <IProduct> product) { try { _product = Utility.GetProductA(product); _promotionType = new Promotion1(); totalPrice += _promotionType.CalculatePriceAfterPromotion(_product); _product = Utility.GetProductB(product); _promotionType = new Promotion2(); totalPrice += _promotionType.CalculatePriceAfterPromotion(_product); _product = Utility.GetProductCD(product); _promotionType = new Promotion3(); totalPrice += _promotionType.CalculatePriceAfterPromotion(_product); } catch (Exception ex) { throw new PromotionException("error:-", ex); } return(totalPrice); }