オブジェクトが不変である場合、オブジェクトのディープコピーを作成するのは非常に簡単で効率的です。そのオブジェクトのメモリポインタをコピーするだけです。
また、深い等価性チェックを行うのも非常に簡単で効率的です。ポインタを比較するだけです。
しかし、データが外界からのものであり、そのIDを確認する必要がある場合はどうなりますか?
次の例を検討してください。
- データベースからの投稿のアプリケーションクエリデータは、不変の投稿オブジェクト(モデル)に逆シリアル化し、メモリにキャッシュします。
- しばらくすると、アプリケーションは同じデータを再度クエリし、それを不変のPostオブジェクトに逆シリアル化します。
- では、投稿が変更されたかどうかを確認するにはどうすればよいですか?不変オブジェクトの参照を比較してIDを確認することはできません。参照は異なりますが(データを2回逆シリアル化したため)、データ自体は同じである可能性があります。
そのような状況にどう対処するか?