У меня есть сомнения по поводу того, как наилучшим образом построить интерфейс нового класса. Будет два других класса, взаимодействующих с новым классом, Platform
и Sensor
. Новый класс Pathfinder
будет получать данные датчика от Sensor
и учитывать любые новые данные при расчете путей. Platform
движется по пути, созданному Pathfinder
, но если Sensor
обнаружит угрозу, Pathfinder
создаст новый путь, который будет автоматически использоваться Platform
при следующей попытке переместиться.
Интерфейс, который я набросал, теперь выглядит так в псевдо-C ++:
class Sensor {
Detect() {
// Get Data
Pathfinder.Process(Data)
}
}
class Platform {
Move() {
while(Can move further)
Waypoint w = Pathfinder.GetNextWaypoint()
// Move towards w
if(Arrived at w)
Pathfinder.PassedWaypoint()
}
}
class Pathfinder {
Process(Data) {
// Adapt path to accomodate Data
RecalculatePath()
}
GetNextWaypoint() {
if(!Path calculated)
RecalculatePath()
return Path.front()
}
PassedWaypoint() {
Path.pop_front()
}
RecalculatePath() {
// Do pathfinding
}
vector<Waypoint> Path
}
Я не очень доволен тем, как платформа будет взаимодействовать с указателем пути. С другой стороны, если я позволю платформе извлекать весь путь, она должна будет периодически проверять, изменилось ли что-то, и, возможно, не достаточно часто, таким образом, идя в любую обнаруженную угрозу.
Как улучшить этот дизайн?