public TrafficLightDrawer Create(ITrafficLightController trafficLight) { switch (trafficLight.GetType()) { case nameof(StandartTrafficLightController): return(new StandartTrafficLight(trafficLight)); case nameof(AdditionalTrafficLightController): return(new AdditionalTrafficLight(trafficLight)); case nameof(PedestrianTrafficLightController): return(new PedestrianTrafficLight(trafficLight)); default: throw new NotSupportedException(); } }