4

環境

シーン グラフとして画面に表示される、ネストされた大規模な構造化ドキュメントを扱っています。ユーザーはこのドキュメントを変更できる必要があります。私は現在、機能的なジッパーを使用して実装しています。

現在、変更のたびにドキュメント全体を再描画しています。しかし、シーングラフを使うと、変化する部分を修正するだけで済みます。

ただし、(フレームワークを開始するつもりはありませんが)、この問題は基本的に関数ではなく状態に関する問題であるとますます感じ始めています。特に:

  • ユーザー アクション (上、下、左、右、文字の挿入、文字の削除) は、計算ではなく、状態の操作に関するものです。

  • ドキュメントのコピーは一度に 1 つだけであり、1 つのスレッドによってヒットされるだけであり、共有しても何のメリットもありません。

現在のアプローチ

ドキュメントを保管し、状態操作機能を提供するために、機能的なジッパーを使用しています。その後、継続的に描き直します。

私が疑う解決策は正しいかもしれません:

すべてをシーン グラフに格納し、関数ジッパーを削除し、変更後、シーン グラフの変更部分を直接変更します。

技術的な質問:

他の人はこれに対処しましたか?この問題の技術的、正式な名前はありますか? (同時実行における「食事の哲学者」と同等ですか?) この問題に対する十分に確立された解決策はありますか?

免責事項

この質問は少しソフトです。最小限の壊れたケースのコード例を貼り付けることはできません

* my code is around 5K LOC
* it's not for me to share publicly

ただし、これは実際の技術的な解決策であり、他の人が回答を共有できることを願っています

ありがとう!

4

1 に答える 1

3

あなたの基本的なプロセスは問題ないようです。たとえば、別のスレッドでツリーを更新するオプションがあり、「元に戻す」ボタンをかなり簡単に実装できるため、現在の形式では柔軟です。変更するたびに、新しいツリーと変更された部分へのパスの両方を返すと、表示で変更された部分だけを更新できます。「モデル」と「ビュー」を分離することについて、多くの人が私よりも強い意見を持っていますが、少なくとも彼らの知恵の一部がここに当てはまると思います。

于 2012-06-20T21:24:24.020 に答える