あなたはおそらく探しているBufferedValueModel
:
サブジェクトである別の ValueModel をラップし、サブジェクトの値の変更を遅らせる ValueModel。値が設定されるまで、サブジェクトの値を返します。トリガー チャネルが Boolean.TRUE に変わるまで、バッファリングされた値はサブジェクトに書き込まれません。
PresentationModel.getBufferedValue()
それらを作成するのに便利です。
ただし、通常はバッファー モデルは避けます。これは、既にかなり複雑なアーキテクチャ モデルがさらに複雑になるためです。また、モデルの検証ではうまく機能しません。バインディングの自動コミット動作はそのままにし、それを中心にコードを構成することをお勧めします。
バッファリングに関する Karsten Lentzsch :
個人的には、ドメイン オブジェクト グラフをコピーしてバッファすることを好みます。多くのアプリケーションでは、クライアント上のドメイン オブジェクトはバックエンド ドメイン オブジェクトのコピーです。この場合、それ以上のバッファリングなしでクライアント ドメイン オブジェクトを操作できます。クライアント ドメイン オブジェクトに加えられたすべての変更をフラッシュするには、バックエンドからそれらをリロードするだけです。
いずれにせよ、プレゼンテーション モデル (PM) レイヤーでバッファが必要な場合は、PM で使用できるようにする必要があります。プレゼンテーション ロジックは、ドメインの状態ではなく、バッファリングされた状態で動作します。
Binding チュートリアルで例を見つけることができます。BufferedAlbumPresentationModel を参照してください。バッファリングされた「クラシック」プロパティの変更をリッスンして、バッファリングされた「composerEnabled」プロパティを更新する方法を示します。BufferedClassicalChangeHandler は、アルバムがクラシックでない場合に作曲家を null に設定する Album#setClassical に実装された動作をコピーすることに注意してください。
JGoodies ダウンロード アーカイブの古いパッケージにチュートリアルがあります。