Я пытаюсь написать программу симуляции вождения, и мне нужна помощь в разработке. У меня есть интерфейс под названием RoadObjects, который на данный момент содержит транспортные средства и млекопитающих. Мне нужно реализовать различные виды автомобилей, таких как грузовики, седаны, полуфабрикаты. у них есть некоторые общие методы и некоторые уникальные. Позже я добавлю другие виды транспортных средств и млекопитающих. Я не хочу использовать наследование, и я пытаюсь сделать это в соответствии с принципами проектирования и шаблонами, такими как принцип открытого-закрытого типа и фабрика. Теперь мой вопрос, должен ли я сделать это так:
RoadObject interface
Vehicle extends RoadObject
Mammal extends RoadObject
SedanImpl implements Vehicle
TruckImpl implements Vehicle
People implements Mammal
...
...
или я просто не должен взаимодействовать с транспортным средством и людьми и делать это?
RoadObject interface
SedanImpl implements RoadObject
TruckImpl implements RoadObject
People implements RoadObject
Новый вопрос:
Я хочу использовать фабричный образец, чтобы выбрать, какой тип транспортных средств, например. Поэтому я создаю VechicleImpl и VechicleImplFactory, чтобы это могло выглядеть так:
RoadObject interface
Vehicle extends RoadObject
VehicleImpl implements Vehicle
Mammal extends RoadObject
SedanImpl implements Vehicle
TruckImpl implements Vehicle
People implements Mammal
Это плохой дизайн? Потому что у VehicleImpl будет много дублирующих методов SedanImpl, TruckImpl и т. Д. Или, если бы я хотел иметь фабрику, создающую метод, где это должно быть?