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

Java 将更改传播到嵌套对象的模式,java,actionscript,Java,Actionscript,我正在实现一个游戏/应用程序,其中玩家的帐户/状态与服务器同步。我正在考虑一个通用的框架,该框架传递对实体嵌套对象的修改,该实体是用户的帐户。让我们假设在讨论计算/反射时,客户端和服务器都是用Java编写的。实际上,客户端是在Actionscript中,它可以动态修改属性 比如说。对根对象Firebase对象的任何对象的修改都会通过一个请求进行传播,该请求可能类似于: Service: PersistenceService Action: modifiedObjects Body: Object

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

比如说。对根对象Firebase对象的任何对象的修改都会通过一个请求进行传播,该请求可能类似于:

Service: PersistenceService
Action: modifiedObjects
Body:
Objects [{"/full/Path/To/Object/1","newValue"},{"/full/Path/to/Object/2","newValue"}]
我请求您提供以下信息:

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

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

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

2所有嵌套对象的属性更改都需要以反射方式进行

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


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

通常,观察者模式是对您从wiki获得的需求的回答

观察者模式也被称为。Dependents,publish/subscribe是一种软件设计模式,在这种模式中,称为subject的对象维护其从属对象(称为Observators)的列表,并通常通过调用其方法之一自动通知其任何状态更改。它主要用于实现分布式事件处理系统

您需要在客户端服务器上实现,因此wiki上给出的示例不适用。您可能需要检查:


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

我调用我的接口ServiceObject和ServiceContainer


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

不相关。这是一种如何以及何时传递数据的模式,而不是如上所述的传递嵌套对象数据的格式。