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)); }
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(); } }