如果对象是不可变的,那么制作对象的深层副本非常容易且高效——只需复制该对象的内存指针即可。
进行深度相等检查也非常简单有效 - 只需比较指针即可。
但是如果数据来自外部世界并且我们需要检查它的身份会发生什么?
考虑以下示例:
- 应用程序从数据库中查询 Post 的数据,将其反序列化为不可变的 Post 对象(模型)并将其缓存在内存中。
- 一段时间后,应用程序再次查询相同的数据,并将其反序列化为不可变的 Post 对象。
- 现在,我们如何检查 Post 是否已更改?我们不能只比较不可变对象的引用来检查身份。引用会有所不同(因为我们对数据进行了两次反序列化),但数据本身可能仍然相同。
如何处理这种情况?