この質問のタイトルをどのように達成できるかについて、すでにいくつかの調査を行っています。私が取り組んでいるアプリは、数年ほど開発されています (ただし、進行は遅いですが、現実の世界での様子はご存知のとおりです)。現在、複数レベルの取り消し/やり直し機能を組み込むことが必須になっています。「始める前にこれについて考えるべきだった」と言うのは少し遅いです...まあ、私たちはそれについて考えていました-そして私たちはそれについて何もしませんでしたが、今ここにあります. SO(および外部リンク)を検索すると、最も一般的な2つの方法が次のように見えることがわかります...
コマンド パターンは非常に多くの作業が必要なように見えます。その過程で何千ものバグが発生することしか想像できないので、あまり好きではありません。
Memento のパターンは、実際、私が頭の中で考えていたものとよく似ています。現在メモリ内にあるオブジェクト モデルのスナップショットをすばやく取得する方法があれば、それをどこかに保存できると考えていました (メモリ内、ファイル内など)。素晴らしいアイデアのように思えますが、これについて私が見ることができる唯一の問題は、それが私たちがすでに書いたものとどのように統合されるかということです. 大きなパネル (場合によっては数百) に画像を描画し、ユーザーが UI またはカスタム ビルドのプロパティ グリッドを介してそれらを操作できるように、アプリが表示されます。アプリ全体が大きなオブザーバー パターンでリンクされています。2 番目に何かが変更されると、イベントが発生し、更新が必要なすべての処理が行われます。これは素晴らしいことですが、ユーザーがプロパティ グリッドの texfield にテキストを入力している場合、UI が追いつくまでに少し時間がかかると考えずにはいられません (ユーザーがキーを押すたびに、新しいスナップショットが追加されるようです)元に戻すリストへ)。だからあなたへの私の質問は....
- Memento パターンに代わる、うまくいくかもしれない何か良い方法を知っていますか?
- Memento パターンがここに収まると思いますか、それともアプリの速度が遅くなりすぎると思いますか。
- Mementoパターンが進むべき道である場合、オブジェクトモデルのスナップショットを作成する最も効率的な方法は何ですか(私はそれをシリアル化するか何かを考えていました)
- スナップショットをメモリに保存する必要がありますか、それともファイルに保存できますか?
ここまで読んでくれてありがとう。皆様からのご意見は貴重であり、非常に高く評価されます。