public IItemDiscountStrategy GetDiscountStrategy(Money price, IMarketingCampaign marketingCampaign) { if (marketingCampaign.IsCrazySalesDay()) { return(new FirstTierDiscountStrategy()); } if (price > Money.OneThousand) { return(new SecondTierDiscountStrategy()); } if (price > Money.OneHundred && marketingCampaign.IsActive()) { return(new ThirdTierDiscountStrategy()); } return(new NoDiscountStrategy()); }
public static IDiscount Create(IMarketingCampaign campaign, IMoney money) { if (campaign.IsCrazySalesDay()) { return(new DiscountCrazySalesDay()); } if (money.IsMoreThanOneThousand()) { return(new DiscountOneThousand()); } if (money.IsMoreThanOneHundred() && campaign.IsActive()) { return(new DiscountOneHundred()); } return(new DiscountNoDiscount()); }
public DiscountEngine(IMarketingCampaign marketingCampaign, IDiscountEngineStrategy discountEngineStrategy) { _marketingCampaign = marketingCampaign; _discountEngineStrategy = discountEngineStrategy; }
public DiscountEngine(IMarketingCampaign marketingCampaign) : this(marketingCampaign, new SpecialDiscountEngineStrategy()) { }