예제 #1
0
    public static T GetCar <T>(string carName) where T : ICar
    {
        ICar objCar = default(T);

        if (typeof(T) == typeof(SmallCar))
        {
            objCar = new SmallCar {
                CarName = carName
            };
        }
        else if (typeof(T) == typeof(MediumCar))
        {
            objCar = new MediumCar {
                CarName = carName
            };
        }
        return((T)objCar);
    }
        /// <summary>
        /// Get Emission by using Factory Design Pattern
        /// </summary>
        /// <param name="value"></param>
        /// <returns></returns>
        public double GetEmission(string value)
        {
            ITransport transport = null;
            //split user input string, as it contains '-'
            var split = value.Split('-');

            if (split.Length >= 1)
            {
                //Convert first element of splitted string into
                //TransportationCategoryEnum type
                TransportationCategoryEnum transportEnum;
                if (Enum.TryParse(split[0], out transportEnum))
                {
                    //Create trasport object at runtime (Factory desing pattern)
                    switch (transportEnum)
                    {
                    case TransportationCategoryEnum.train:
                        transport = new Train();
                        break;

                    case TransportationCategoryEnum.bus:
                        transport = new Bus();
                        break;

                    case TransportationCategoryEnum.medium:
                        transport = new MediumCar();
                        break;

                    case TransportationCategoryEnum.small:
                        transport = new SmallCar();
                        break;

                    case TransportationCategoryEnum.large:
                        transport = new LargeCar();
                        break;
                    }
                }
            }


            return(getEmissionFromTransportType(value, transport));
        }
예제 #3
0
            public static void UseCar()
            {
                ICarBuilder luxuryCar = new LuxuryCar();
                ICarBuilder mediumCar = new MediumCar();
                ICarBuilder economyCar = new EconomyCar();

                Console.WriteLine("Car Components");
                Console.WriteLine("1. Luxury Cars");
                Console.WriteLine("2. Medium");
                Console.WriteLine("3. Economy Cars");

                CarBuilderDirector builder = new CarBuilderDirector();
                
                if (Console.ReadKey().KeyChar.ToString() == "1")
                {
                    builder.Constructor(luxuryCar);
                    luxuryCar.GetParts().ShowAllThePartsInCar();
                }
                else if (Console.ReadKey().KeyChar.ToString() == "2")
                {
                    builder.Constructor(mediumCar);
                    mediumCar.GetParts().ShowAllThePartsInCar();
                }
                else if(Console.ReadKey().KeyChar.ToString() == "3") {
                    builder.Constructor(economyCar);
                    mediumCar.GetParts().ShowAllThePartsInCar();
                }
            }