0

Memento パターンを使用して、マルチインスタンス フォームのプロパティを保存します。このフォームでは、ユーザーが親フォーム内に n 個のフォームを作成します。記念品の目的は、ユーザーが親フォームを閉じてから再度開いたときに、同じ数のフォームとその設定を取り戻すことです。フォームの記念品の保存は、親フォームの「保存」ボタンで行います。ということで、2つチャレンジです..

  1. 新しいフォームを開くときに使用するプロパティの既定のセットが必要なので、これらの既定値をどこに設定すればよいでしょうか? 記念品の既定の空のコンストラクター、またはオリジネーターのどこか (どこ?) で?
  2. 次に、ユーザーがデフォルトを変更できるようにして、独自のデフォルトの記念品を作成できるようにします。これはどのように/どこに保存され、そのようなデフォルトの記念品が設定されているかどうかをどのように判断しますか?

もちろん、これを微調整して何らかの形で機能させることもできますが、これを解決する一般的なパターンの説明があるかどうかを知りたいので、従うべき確固たるガイドラインがあります。

乾杯!

4

3 に答える 3

1

あなたの説明はメメント パターンと実際には一致しません。Memento の全体的なポイントは、復元されるクラスのインスタンスのみが memento の表現について何かを知っているということです。つまり、Memento は、クライアントが任意の状態を設定できるようにするのではなく、状態を隠すことを目的としています。

上記で Mark Cidade が示唆しているように、問題に使用するより適切なパターンが他にもあります。

于 2010-09-16T21:21:13.570 に答える
1

memento クラスのデフォルトの空のコンストラクターは問題ないはずです。または、既定のコンストラクターを残して、事前に設定されたデフォルト構成ではなく空のCreateDefault()mementoを初期化する場合など、ファクトリ メソッドを使用することもできます。

カスタム デフォルトを指定するために使用できるさまざまな作成パターンが多数あります。これには、プロトタイプ抽象ファクトリが含まれます。

于 2010-09-16T07:01:40.393 に答える
0

あなたの質問とBurleighBearの回答でのコメントから、単純な実装で十分であり、ここでパターンを「強制」する必要はないと感じています。

于 2011-05-03T18:11:37.583 に答える