我正在升级一个数据与 UI 轻微耦合的设计:
class Object {
UI * ui;
};
class UI {
Object * object;
};
通过 UI 指针将更新通知推送到 ui 相当简单,但新的要求是数据与 UI 完全分离,并且不同对象具有多个不同的 UI 表示,因此单个 UI 指针不再这样做,也不是允许成为数据层的一部分。
QObject
由于对象数量多(数亿范围内)并且QObject
比层次结构中最大的对象大几倍,因此无法使用类似和信号之类的东西。对于 UI 部分,这并不重要,因为一次只有一部分对象是可见的。
我实现了一个 UI 注册表,它使用 multihash 来存储所有 UI,使用Object *
为一个键,以便能够获取给定对象的 UI 并发送通知,但是 UI 的查找以及注册和注销存在考虑到高对象数,开销很大。
所以我想知道是否有一些设计模式可以在解耦层之间以更少的开销发送通知?
澄清一下:大多数更改都是在 UI 端完成的,UI 元素保留指向相关对象的指针,所以这不是问题。但是从 UI 端对某些对象进行的一些更改会导致数据层中的相关对象发生无法预测的更改,以便请求更新受影响对象的 UI。事实上,对一个对象的 UI 上的单个更改可能会导致对其他对象的一连串更改,因此我需要能够通知它们最终的 UI 表示进行更新以反映这些更改。