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());
        }
예제 #2
0
        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())
 {
 }