【问题标题】:What is the Serialization Proxy Pattern? [duplicate]什么是序列化代理模式? [复制]
【发布时间】:2009-03-31 18:10:59
【问题描述】:

唉,谷歌让我失望了……

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

【问题讨论】:

    标签: design-patterns serialization


    【解决方案1】:

    在 Josh Bloch 的 Effective Java 第二版的最后一节中有一个很好的描述。

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

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

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

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

    【讨论】:

    • 我想知道序列化代理是否可以外部化。这本书只提到了Serializable。谢谢!
    猜你喜欢
    • 2011-04-14
    • 2011-11-14
    • 2010-10-11
    • 2011-08-05
    • 2014-01-31
    • 2011-07-12
    • 2011-10-26
    • 1970-01-01
    • 2011-08-26
    相关资源
    最近更新 更多