gpt4 book ai didi

design-patterns - 什么是序列化代理模式?

转载 作者:行者123 更新时间:2023-12-03 18:35:36 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





Follow up: instance control in Java without enum [closed]

(2 个回答)


6年前关闭。




唉,谷歌让我失望了……

什么是序列化代理模式,我在哪里可以了解有关实现和使用它的更多信息?

最佳答案

在 Josh Bloch 的 Effective Java, Second Edition 的最后一节中有一个很好的描述。

假设你有一个类(class) A您想使其可序列化。你先声明它实现Serializable .然后你使用序列化方法writeReplace()返回一个所谓的“序列化代理”,它将代替 A 的实例进行序列化. writeReplace()方法不需要公开。 A 上的默认序列化永远不会被调用,所以 A 的所有 API 属性可以维持。

通常,代理作为私有(private)静态嵌套类实现,它本身必须实现 Serializable (或 Externalizable 用于完全控制读/写过程)。因为代理是私有(private)的,所以它的实现细节,比如有一个无参数的构造函数和可变的,将被隐藏。

代理存储了足够的原始对象状态以进行写入,以便它可以在反序列化时重构对象。在反序列化时,代理使用方法 readResolve()返回 A 的实例.对于单例,这可以是单例实例本身。

我用示例写了一篇详细的博客文章,Serializing Immutables and Singletons with a Serialization Proxy .

关于design-patterns - 什么是序列化代理模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/702357/

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