gpt4 book ai didi

java - 将更改传播到嵌套对象的模式

转载 作者:行者123 更新时间:2023-12-01 05:22:39 25 4
gpt4 key购买 nike

我正在实现一个游戏/应用程序,其中玩家的帐户/状态同步到服务器。我正在考虑一个通用框架,用于传达实体(该实体是用户帐户)的嵌套对象的修改。为了讨论计算/反射,我们假设客户端和服务器都是用 Java 编写的(实际上客户端是在 Actionscript 中,可以动态修改属性)

Firebase为例。对根对象(Firebase 对象)的任何对象的修改都会通过可能类似于以下内容的请求进行传播:

Service: PersistenceService
Action: modifiedObjects
Body:
Objects [{"/full/Path/To/Object/1","newValue"},{"/full/Path/to/Object/2","newValue"}]

我对您的意见的请求如下:

1) 请更正和/或补充以下关于实现将修改传播到对象树的通用框架的想法。

在发送端,似乎每个对象都:

1)需要存储根实体的完整路径

2) 对所有嵌套对象的属性的更改需要以反射方式完成

或者

需要强制同步,将上次请求中实体保存的对象树与当前对象树进行比较以进行修改。

在服务器端,可以分析对象的路径,将一次请求中多次访问的对象缓存起来,避免通过引用/搜索集合多次访问树。

最佳答案

我得出的答案实际上非常明显,这显然是最好的方法。答案是镜像数据库表。为每个对象分配一个 id,并将每个对象存储在 ArrayList 中(或者根据类型为每个对象分配一个唯一的 ID,并将该对象存储在其类型的 ArrayList 中,而 ArrayList 本身存储在 HashMap 中)。

我将我的接口(interface)称为 ServiceObject 和 ServiceContainer。

现在我唯一需要看到的是 json 和 protostuff 如何序列化对对象的双重引用。它们是否被序列化为单独的对象?如果是这样,那么任何嵌套的 ServiceObject 都需要反序列化为对 ArrayList 中对象的引用。

关于java - 将更改传播到嵌套对象的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10136617/

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