2011-02-06 3 views
2

ドメインモデルのコンテキストで編集フォームを表現する最善の方法は何か、私はコマンドデザインパターンに悩まされました。これによるとステートフルコマンドパターン

Using Command Design pattern コマンドは、私は必要なものではありませんこれは不変でなければなりません - 私は編集可能なパラメータを持つステートフルなコマンドを必要とする(全体のコマンドは、UI /形で編集されます)

それが考えられているのはなぜステートフルなコマンドを持っているのは悪いですか?


EDIT:いくつかの時間後に、私がViewModelにパターンを探していた、今は明らかです。これは、Webアプリケーション画面をモデル化する適切な方法です。基本的にステートフル(ビューインスタンスごと)のコントローラです。

+0

変更可能なコマンドを実装しようとしましたか?このプロセスで解決できない問題にヒットしましたか? – fredoverflow

+0

いいえ - 私はそれを実装しようとしています。私はちょっとしたことがないかと思っています... –

+0

@kamil、これは元に戻すことができますか? – hvgotcodes

答えて

2

スナップショットから現在の状態を再作成するために使用することができるため、これらのスナップショットを変更できないようにすることができます。しかし、コマンドを適用した後に変更できないことを確認している限り、必要なすべてのパラメータを持つことができます。

0

もし私が代わりにFlyWeightパターンを使用することをお勧めします。コマンドパターンと似ているのは、オブジェクトのハッシュであり、既に存在する場合は同じオブジェクトを再利用して、オブジェクトの状態を保持します。

FlyWeightは、(ハッシュ関数によって)オンザフライで呼び出すことができるシングルトンオブジェクトのグループと考えることができます。

したがって、flyweightfactoryはすべてのオブジェクトをハッシュマップに格納し、ファクトリを使用してその状態を維持するオブジェクトを取得できます。

http://www.avajava.com/tutorials/lessons/flyweight-pattern.html - >誰でも参考にしてください。