Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Qt 实体之间的相互作用_Qt_Design Patterns - Fatal编程技术网

Qt 实体之间的相互作用

Qt 实体之间的相互作用,qt,design-patterns,Qt,Design Patterns,假设我有一些属于这个世界的环境(让我们把它命名为world)和一些实体(让我们把它们命名为bots)。我希望机器人相互交互(例如,获取位于机器人视野内的机器人列表)。但是如果机器人不知道他们的环境,他们也不知道其他的环境。所以问题是-这种交互是如何在现实世界的应用程序中实现的 我看到的解决方案是给机器人一个指向世界的指针,但我觉得这很不合逻辑,因为每个机器人在与世界上其他机器人交互时都拥有相同的“权利” 我现在使用的解决方案是QT信号和插槽概念。每个机器人都有一个信号queryNeighbour

假设我有一些属于这个世界的环境(让我们把它命名为
world
)和一些实体(让我们把它们命名为
bot
s)。我希望机器人相互交互(例如,获取位于机器人视野内的机器人列表)。但是如果机器人不知道他们的环境,他们也不知道其他的环境。所以问题是-这种交互是如何在现实世界的应用程序中实现的

我看到的解决方案是给机器人一个指向世界的指针,但我觉得这很不合逻辑,因为每个机器人在与世界上其他机器人交互时都拥有相同的“权利”

我现在使用的解决方案是QT信号和插槽概念。每个机器人都有一个信号
queryNeighbours(机器人*请求者,QVector*结果)
,世界上有一个插槽
giveneights(机器人*请求者,QVector*结果)
。因此,我将机器人的信号与世界的插槽连接起来,当机器人需要找到邻居时,它只会像这样得到他们:

QVector<Bot *> bots;
emit queryBots(this, &bots);
QVector机器人;
发出queryBots(此,&Bot);

但是,我认为有一些模式可以实现我所需要的,所以我不需要QT。

也许你可以使用一个类,它的唯一目的是处理机器人之间的关系,并使这个类对世界和机器人都可用:)

我考虑过这一点,但希望能找到更简单的方法。不过,感谢您的建议(它实际上被命名为
中介模式
),这只是一个想法。所以这很好,我们都学到了一些东西:)如果是我,我会使用你们提到的中介模式。但是,如果机器人只需要彼此交互,那么处理关系的类也不需要对世界环境可用(与ixM的答案不同)。所有机器人都可以从包含中介的基类继承(并对其进行保护)。