请就以下主题咨询我的意见:
我有一个模型 - 对象的结构。如:
包含参与者的活动
当前任务
每项任务的受让人
模型将在服务器上进行腌制,并通过网络传输到客户端GUI应用程序。由于pickle我想要保持模型类尽可能简单(即只有简单的类只有数据字段,里面没有任何单个方法)。因此,我无法在模型对象上创建信号(例如OnUpdate)。
有时服务器会发送模型更新。例如“任务文本已更改”。应用更新后,我需要将其反映在UI中。在任务文本更改的情况下,应该更改UI中的标签。我只想更改相关控件,因此整个UI更新不是最佳解决方案。
另一方面,不想在搜索变化时遍历整个模型 - 这将太耗费资源。
那么,通知UI有关普通数据结构更改的最佳模式是什么?
答案 0 :(得分:0)
您可能在错误概念下操作:泡菜不包括来自腌制类的代码。您可以向数据结构添加方法,但不会增加pickle的大小。
这是对咸菜的常见误解。它们不包含代码。
答案 1 :(得分:0)
您可以添加标记,例如self.isOnClientSide,并在每个更新处理程序中检查它,以便在任何一种情况下都可以使用不同的逻辑。
def onUpdateFoo(self):
if self.isOnClientSide:
return self.onUpdateFooOnClient()
else:
return self.onUpdateFooOnServer()
在取消腌制后立即相应地更改此标志。