ダイアログ編集パターン

あるモデルがあって、そのモデルの編集ダイアログがあるとします。

ダイアログにて編集後、OKを押した場合、編集結果をモデルに反映、Cancelを押した場合、編集結果は無視してモデルは不変。というのはよくあるパターンだと思います。

Javaの場合、メソッドへの引数は基本的に(プリミティブ型を除き)参照渡しとなるので、ダイアログクラスに対して編集対象のモデルを生のまま渡した場合、モデルが直接編集されてしまい*1、キャンセルしても編集結果が反映されてしまいます。

そこで、ダイアログに渡す前、若しくはダイアログのコンストラクタ辺りで、編集対象モデルを作業用モデルとしてコピーしなければいけないですよね。

こういった事態って、結構多いと思うんですが、パターンみたいなのは無いんでしょうかねぇ…。どう実装するか迷っています。

*1:単純なText Widgetなら問題ありませんが、Jiemamyで言うカラム編集なんかをすると…。