次のような状況で最適なデザインを探しています。グローバルとローカルの状態を持つ多くのオブジェクト
私たちは多くのオブジェクトが1つのクラス、例えば画像フレームを形成しています。それぞれの写真フレームは3種類の画像を表示できます。 1)顔2)
ザッツ簡単に空のスクリーンショット3):
public enum PictureMode
{
Face,
Screen,
None
}
public class PictureFrame {
private PictureMode mode;
public PictureMode Mode
{
get { retrun mode; }
set { /* set currentPicture to the correct one */ }
}
private Image currentPicture;
private Image face;
private Image screen;
private Image empty;
public PictureFrame(Image face, Image screen) {
this.face = face;
this.screen = screen;
mode = PictureMode.None; // Maybe this is our default.
}
}
今は違う写真といくつかのPictureFramesを作成し、簡単に各1のモードを変更することができます。
今、私はすべてのPictureFrames用のグローバルセッターを追加したいと思います。次に、新しいPictureFrameはそれぞれ、グローバル設定をデフォルトの設定として使用します。後で異なるスルーに設定することができます。
私の解決策ですが、より良いものがあるかどうか議論したいと思います。
静的フィールドPictureFrameを追加しました。すべてのPictureFramesに到達可能なPictureFrameクラスにインスタンスを追加しました。これで、すべてのPictureFramesを繰り返して、新しいグローバルモードをすべてのフレームに適用できます。
さらに、私はすべてのフレームでそれを変更し、PictureFrameのコンストラクタでそれを読み取る場合、グローバルモードを設定する2番目の静的フィールドPictureFrame.GlobalImageModeを持っています。 GlobalImageModeの設定子は、PictureFrameクラスでも静的にすることができます。
は、システムの要件や結果画面モードですこれまでの設計ですか? –