// $G$ DSN-002 (-10) The UI should not know Car\Truck\Motorcycle private Vehicle getNewVehicleFromUser(string i_LicenseNumber) { (r_Screens[eUIScreens.VehicleType] as MenuScreen).Display(out string vehicleType); VehicleProducer.eProducibleVehicles vehicleToProduce = (VehicleProducer.eProducibleVehicles)parseMenuOption(vehicleType); Vehicle vehicle = VehicleProducer.Produce(i_LicenseNumber, vehicleToProduce); getVehicleData(ref vehicle); switch (vehicleToProduce) { case VehicleProducer.eProducibleVehicles.Car: Car car = (vehicle as Car); getCarDataFromUser(ref car); break; case VehicleProducer.eProducibleVehicles.Motorcycle: Motorcycle motorcycle = (vehicle as Motorcycle); getMotorcycleDataFromUser(ref motorcycle); break; case VehicleProducer.eProducibleVehicles.Truck: Truck truck = (vehicle as Truck); getTruckDataFromUser(ref truck); break; } return(vehicle); }
static void Main() { var car = VehicleProducer.Build(CarBuilder.GetInstance()); var motorCycle = VehicleProducer.Build(MotorCycleBuilder.GetInstance()); var scooterBuilder = VehicleProducer.Build(ScooterBuilder.GetInstance()); car = CarBuilder .GetInstance() .WithDoors() .WithEngine() .WithFrame() .WithType() .WithWheels() .Build(); }