gpt4 book ai didi

java - java.io.Serializable 是如何成为 Memento 模式的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:53:46 25 4
gpt4 key购买 nike

正如我们所知,备忘录模式不会违反封装、捕获和外部化对象的内部状态,并且可以在不知道原始状态的情况下回收。

我的问题是 java.io.Serializable 是如何在这种模式下出现的,因为每当我们序列化任何私有(private)变量并将对象状态写入文件时同时私有(private)变量的值对世界开放,封装似乎在这里失败了。

最佳答案

<罢工>Wikipedia article on the Memento pattern没有提到任何关于封装的事情,事实上,那里给出的例子准确地捕获了 Memento 中私有(private)变量中保存的状态。

封装(“一种限制访问某些对象组件的语言机制”)是指您必须如何编写代码才能更改对象的内部状态。

然而,对象的内部状态可以由外部输入确定,例如字符串的内容取决于从中读取的文件或从网络接收到的数据。复选框的状态取决于用户是否选中它,而类中的相应字段可能具有私有(private)访问权限,并且该状态对于其他类可能是只读的。

通过将字段置于私有(private)访问之下来保护字段旨在帮助开发人员将对象的状态保持在一致的状态,即避免字段被该类外部的代码设置为不一致的状态(例如,如果字段的值A 取决于字段 B 的值)。

就此数据被视为 secret 而言,它与“隐私”无关。当然,可以编写另一个类,然后读取序列化的私有(private)字段并使它们在不同的类中公开可用,或者您甚至可以编辑序列化文件,但我不确定这样做会带来什么好处。

关于java - java.io.Serializable 是如何成为 Memento 模式的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6609746/

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