gpt4 book ai didi

c++ - 两个封装组件之间的通信

转载 作者:塔克拉玛干 更新时间:2023-11-03 07:59:49 26 4
gpt4 key购买 nike

我有三个组件 - 一个渲染系统、一个物理模拟和一个 UI。 UI 代码是用脚本编写的,不受信任。现在我需要将我的物理模拟结果传达给渲染系统并且不确定正确的设计。例如,我可以简单地将新的 sim 数据复制到渲染器中。然而,这似乎有点浪费。我可以将渲染器设置为直接对 sim 的数据进行操作,但这似乎会违反封装。

我打算让这个系统与可能有数千个移动单元一起工作,因此值得牢记性能。

如何在不违反封装的情况下将数据从一个组件快速移动到另一个组件?

最佳答案

我可能会让渲染器分配对象来保存渲染所需的数据。这些对象将定义一个足以让渲染器完成其工作的可见界面,但在其他方面是不透明的。尽管对象本身由渲染器分配/拥有,但它们对渲染器来说大多是不透明的类型。

模拟器拥有这些对象内部的知识(至少在需要比公共(public)界面显示的更多的知识时)。渲染器基本上只是从它们读取数据,而模拟器可以/将修改它们的状态/向它们写入数据。

一种实现方法是对“中介”对象使用多重继承。其中一个 parent 提供有限的公共(public)接口(interface)供渲染器使用,另一个提供更全面的接口(interface)供模拟器使用。

当然,就像基本上任何由 C++ 本身提供的保护一样,这基本上只是防止意外,而不是故意破坏。我假设您对渲染器缺乏信任基本上是为了防止可能的错误,而不是可能试图故意破坏安全性的渲染器。如果你需要防止后者,你几乎需要至少使用操作系统级别的机制,例如模拟器和渲染器在不同的进程中,它们之间有某种 IPC(但是,当然,这几乎不可避免地会增加相当多的开销)。

关于c++ - 两个封装组件之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10554647/

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