.NET での memento の 2 つの異なる実装を見てきました。
1 つは非常に単純です。オブジェクトはそれ自体の別のインスタンスを作成します。
もう 1 つは、BinaryFormatter と MemoryStream を使用してオブジェクトをシリアル化することです。
好ましい方法はどれですか? 誰でも各アプローチの長所/短所を指摘できますか?
ところで、リソースの使用状況/開発者の生産性の観点から見てみたいと思います。最初にそれを述べなかったことをお詫びします。
記念品を永続化する必要がないと仮定すると、どちらが優先されますか?
開発者の生産性の観点からは、シリアライゼーションが圧倒的に有利です。プライベート コンストラクターやフィールド割り当てなどを含む可能性のあるクローンを手動で作成するよりも、任意のオブジェクトに対して一般的な数行を作成する方が効率的です。
しかし、繰り返しになりますが、シリアライゼーションは重いかもしれません - 私は確信が持てません。