gpt4 book ai didi

c++ - 类接口(interface)设计困境

转载 作者:太空宇宙 更新时间:2023-11-04 12:17:18 25 4
gpt4 key购买 nike

我对如何最好地构建新类的接口(interface)存疑。将有另外两个类与新类通信,PlatformSensor。新类 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
}

我对平台与探路者的交互方式并不十分满意。另一方面,如果我让平台获取整个路径,它将必须定期检查是否有变化,而且可能不够频繁,因此会进入检测到的任何威胁。

如何改进这个设计?

最佳答案

您可以使用设计模式 "Observer" .

然后平台对象可以订阅探路者事件“开始重新计算”(立即停止移动或返回或...)和“计算完成”。当 Pathfinder 对象有一条新路径时,Platform 对象可以立即请求整个数据。

关于c++ - 类接口(interface)设计困境,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7091548/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com