在groovy中序列化闭包

时间:2012-03-10 18:34:42

标签: serialization groovy closures

我正在使用Groovy开发游戏,我正在考虑广泛使用闭包来使架构更清洁。 例如,要实现状态效果(例如中毒), Player 对象将具有执行每个游戏回合的闭包列表。保存游戏时必须将这些序列化。

将闭包存储在需要序列化的对象中通常是个好主意吗?或者我应该选择更传统的架构(例如存储 StatusEffect 对象列表)?

1 个答案:

答案 0 :(得分:4)

有一个闭包列表来执行每个游戏转换听起来像一个非常好的主意: - )

Serialising Closures是完全可能的。从Groovy 1.8.5开始,随着两个方法dehydraterehydrate被添加到闭包中,它变得更加容易(ownerthisObject和{{1}可以在序列化之前剥离)

但我在本机java序列化方面遇到了保存数据的问题。为了在系统之间发送短期数据,它可能很棒(但即便如此,我会看protocol buffersthrift

如果您需要更新游戏,请考虑一下会发生什么?如果delegate影响中存在错误,那么在保存文件中使用错误中毒闭包保存的每个用户都将保留该错误,直到它消失为止。在多人游戏中,人们也可以操纵他们的保存游戏文件以给自己带来意想不到的或不需要的权力(因为权力本身的功能将存储在文件中)。我可以看到操纵毒药的影响所以它增加HP而不是去除它们可能是有益的; - )

简而言之,我想我所说的是我会写出一个字符表,其中包含影响用户,库存,分数等的ID,然后检查并应用闭包,因为文件是读入。