Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            Console.WriteLine("Please select the Shipping method 1.FexEd 2.DHL 3.In House Shipping");
            string input = Console.ReadLine();

            int  choice = 0;
            bool result = int.TryParse(input, out choice);

            if (result == true)
            {
                OrderProcessor orderProcessor = new OrderProcessor();

                //这里体现null object pattern
                //IShippingStrategy shippingStrategy = new InvalidShippingStrategy();//一般的写法
                IShippingStrategy shippingStrategy = InvalidShippingStrategy.Instance;

                switch (choice)
                {
                case 1:
                    shippingStrategy = new FedExShippingStrategy();
                    break;

                case 2:
                    shippingStrategy = new DHLShippingStrategh();
                    break;

                case 3:
                    shippingStrategy = new InHouseShippingStrategy();
                    break;
                }
                orderProcessor.ProcessOrder(shippingStrategy);
            }
        }
Ejemplo n.º 2
0
        //这里体现null object pattern
        //public void ProcessOrder(IShippingStrategy shippingStrategy=null) //没用null object pattern之前的写法
        public void ProcessOrder(IShippingStrategy shippingStrategy)
        {
            #region 没用null object pattern之前的写法
            //if (shippingStrategy != null)
            //{
            //    shippingStrategy.ScheduleShipping();
            //}
            //else
            //{
            //    Console.WriteLine("Invalid Shipping Strategy");
            //}
            #endregion

            shippingStrategy.ScheduleShipping();
        }
        public StrategySelector(CountryShippingModel model)
        {
            switch (model.Country)
            {
            case Country.Netherlands:
                shippingStrategy = new NetherlandsShippingStrategy();
                break;

            case Country.Belgium:
                shippingStrategy = new BelgiumShippingStrategy();
                break;

            case Country.Other:
                shippingStrategy = new OtherCountryShippingStrategy();
                break;
            }

            ShippingStrategy = shippingStrategy;
        }
 public StrategyContext(IShippingStrategy shippingStrategy)
 {
     _shippingStrategy = shippingStrategy;
 }
Ejemplo n.º 5
0
 public OnlineOrder(List<Product> orderItems, IShippingStrategy shippingMethod, IPrintMedium printMethod)
     : base(orderItems, shippingMethod, printMethod)
 {
 }
Ejemplo n.º 6
0
 public CostCalculationService_WithStrategy(IShippingStrategy shippingStrategy)
 {
     _shippingStrategy = shippingStrategy;
 }
 /// <summary>
 /// No default Constructor ensures that a Strategy object is always provided when constructing a ProductShipper
 /// </summary>
 /// <param name="shippingStrategy"></param>
 public ProductShipper(IShippingStrategy shippingStrategy)
 {
     _shippingStrategy = shippingStrategy;
 }
Ejemplo n.º 8
0
 public ShippingService(IShippingStrategy strategy)
 {
     this.strategy = strategy;
 }
Ejemplo n.º 9
0
 public CostCalculationService(IShippingStrategy shippingStrategy)
 {
     this.shippingStrategy = shippingStrategy;
 }
Ejemplo n.º 10
0
 public Order(IShippingStrategy shippingStrategy)
 {
     _shippingStrategy = shippingStrategy;
 }
 public ShippingCostCalculatorService(IShippingStrategy shippingStrategy)
 {
     _shippingStrategy = shippingStrategy;
 }
 public ShippingCalculation_WithStrategy(IShippingStrategy shippingStrategy)
 {
     this.shippingStrategy = shippingStrategy;
 }
Ejemplo n.º 13
0
 public ShopingCostCalculator(IShippingStrategy strategy)
 {
     ShippingStrategy = strategy;
 }
Ejemplo n.º 14
0
 public StrategyCostCalculation(IShippingStrategy strategyShipping)
 {
     _strategyShipping = strategyShipping ?? throw new ArgumentNullException(nameof(strategyShipping));
 }
Ejemplo n.º 15
0
 public double CalculateShipping(IShippingStrategy shippingStrategy, Order order)
 {
     return(shippingStrategy.CalculateShippingCost(order));
 }
Ejemplo n.º 16
0
 public Order(IShippingStrategy shippingStrategy)
 {
     _shippingStrategy = shippingStrategy;
 }
 public double Calculate(Order order, IShippingStrategy shippingStrategy)
 {
     return(shippingStrategy.Calculate(order));
 }
Ejemplo n.º 18
0
 //In theory Chekout class should take an instance of IShippingStrategy instead of Order
 //And our CalculateShipping method should take Order as a parameter
 //This is all that is left after strategy. No more if else block
 public decimal CalculateShipping(IShippingStrategy shippingMethod)
 {
     return(shippingMethod.CalculateShipping(order));
 }
 public ShipSalesOrderService(IShippingStrategy shippingStrategy)
 {
     _shippingStrategy = shippingStrategy;
 }