public static IOrderProcessor CreateOrderProcessor(ProductType productType, IOrderProcessorModel orderProcessorModel)
        {
            IOrderProcessor orderProcessor = null;

            switch (productType)
            {
            case ProductType.Book:
                orderProcessor = new BookProcessor();
                break;

            case ProductType.PhysicalProduct:
                orderProcessor = new PhysicalProductProcessor();
                break;

            case ProductType.ExistingMembership:
            case ProductType.NewMembership:
                orderProcessor = new MembershipProcessor(orderProcessorModel);
                break;

            case ProductType.Video:
                orderProcessor = new VideoProcessor(orderProcessorModel);
                break;
            }
            return(orderProcessor);
        }
示例#2
0
        static void Main(string[] args)
        {
            Console.WriteLine("Enter the product type to proceed");
            Console.WriteLine("1. Physical Product\n" +
                              "2. Book\n" +
                              "3. Activation of Membership\n" +
                              "4. Upgrading the Existing membership\n" +
                              "5. \"Learning to Ski\" video");

            Console.WriteLine("Press 0 to exit.");

            string enteredValue = Console.ReadLine();

            while (enteredValue != "0")
            {
                if (int.TryParse(enteredValue, out int intResult))
                {
                    if (Enum.IsDefined(typeof(ProductType), intResult))
                    {
                        ProductType productType = (ProductType)intResult;

                        IOrderProcessorModel orderProcessorModel = null;
                        switch (productType)
                        {
                        case ProductType.Video:
                            orderProcessorModel = ModelBuilder.CreateVideoProcessorModel(Constants.LEARNING_TO_SKI);
                            break;

                        case ProductType.NewMembership:
                        case ProductType.ExistingMembership:
                            orderProcessorModel = ModelBuilder.CreateMembershipProcessorModel(productType);
                            break;
                        }

                        OrderHandler orderHandler = new OrderHandler(productType, orderProcessorModel);
                        bool         isSuccess    = orderHandler.HandleOrder();

                        if (!isSuccess)
                        {
                            Console.WriteLine("Order couldn't be completed due to system issue.");
                        }
                    }
                    else
                    {
                        Console.WriteLine("Entered value is not a valid product type.");
                    }
                }
                else
                {
                    Console.WriteLine("Entered value is not a number.");
                }
                enteredValue = Console.ReadLine();
            }
        }
示例#3
0
 public OrderHandler(ProductType productType, IOrderProcessorModel orderProcessorModel)
 {
     _productType         = productType;
     _orderProcessorModel = orderProcessorModel;
 }
示例#4
0
 public VideoProcessor(IOrderProcessorModel orderProcessorModel)
 {
     _videoProcessorModel = (VideoProcessorModel)orderProcessorModel;
 }
示例#5
0
 public MembershipProcessor(IOrderProcessorModel orderProcessorModel)
 {
     _membershipModel = (MembershipProcessorModel)orderProcessorModel;
 }