0

私は現在、プレゼンテーション モデル パターンを使用して Flex/PHP プロジェクトのクライアント側を構築しています。

私が達成しようとしていること:
現在、Node.js というドメイン オブジェクトに関する編集不可能な情報を表示するビューがあります。ノードが編集可能で、ユーザーが適切な権限を持っているかどうかに応じて、このオブジェクトを変更できる追加のビューが利用可能になります。加えられた変更は、ユーザーが「変更を保存」することを決定した場合にのみサーバーにコミットされます。NodeA に変更が加えられ、ユーザーが変更を保存せずに別の NodeB に移動した場合、NodeA は元の状態に戻ります。

設計:
現在のノードへの参照を保持する情報ビューの PM があります。編集ビューの PM はこの情報 PM から拡張され、ラップされた Node オブジェクトに変更を加えるメソッドが追加されます。両方の PM には同じノード参照が注入されており、情報/編集ビューのすべてのフィールドは PM を介してノードにバインドされています。

問題:
ユーザーが NodeA に変更を加えたがコミットしていない場合、元の状態に戻すための洗練された解決策が思い浮かびません。基本的に、これまで私が考えていたことは、編集 PM で個別の値のコピーを保持することです。新しいノード参照をクローン作成するか、ノード プロパティの同一のセットを使用します。ノードにはすでにドメイン ロジックが格納されているため、これら 2 つのうち前者の方が適しているように思えますが、限定された範囲で使用される場合でも、一意のドメイン オブジェクトのクローンを作成することは悪い習慣ではないかと思います。

4

2 に答える 2

0

各ビューには、Presentation Model クラスの独自のインスタンスが必要です。ユーザーが別のビューに移動するときに保存していない場合は、メモリに保持してください。クローニングは、より複雑なプロセスを通じて基本的に同じことを達成します。

于 2009-04-25T05:22:11.510 に答える