1 package org.opentrafficsim.road.gtu.lane;
2
3 import org.opentrafficsim.core.gtu.GtuType;
4
5 /**
6 * Factory for vehicle models.
7 * <p>
8 * Copyright (c) 2013-2023 Delft University of Technology, PO Box 5, 2600 AA, Delft, the Netherlands. All rights reserved. <br>
9 * BSD-style license. See <a href="https://opentrafficsim.org/docs/license.html">OpenTrafficSim License</a>.
10 * </p>
11 * @author <a href="https://github.com/averbraeck">Alexander Verbraeck</a>
12 * @author <a href="https://tudelft.nl/staff/p.knoppers-1">Peter Knoppers</a>
13 * @author <a href="https://dittlab.tudelft.nl">Wouter Schakel</a>
14 */
15 public interface VehicleModelFactory
16 {
17
18 /** No vehicle model. */
19 VehicleModelFactory NONE = fixed(VehicleModel.NONE);
20
21 /** Acceleration bounded vehicle model. */
22 VehicleModelFactory MINMAX = fixed(VehicleModel.MINMAX);
23
24 /**
25 * Factory returning the same instance always.
26 * @param vehicleModel VehicleModel; vehicle model
27 * @return fixed vehicle model
28 */
29 static VehicleModelFactory fixed(final VehicleModel vehicleModel)
30 {
31 return new VehicleModelFactory()
32 {
33 @Override
34 public VehicleModel create(final GtuType gtuType)
35 {
36 return vehicleModel;
37 }
38 };
39 }
40
41 /**
42 * Create next vehicle model for given GTU type.
43 * @param gtuType GtuType; GTU type
44 * @return next vehicle model for given GTU type
45 */
46 VehicleModel create(GtuType gtuType);
47
48 }