我正在为以下情况寻找最佳设计。
我们有许多对象形成一个类,例如相框。现在每个相框可以显示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,并轻松更改每张图片的模式。
现在我想为所有 PictureFrames 添加一个全局设置器。然后每个新的 PictureFrame 都应该将全局设置作为默认设置。稍后可以将其设置为不同的通过。
这是我的解决方案,但我想讨论是否有更好的解决方案。
我在所有 PictureFrames 都可以访问的 PictureFrame 类中添加了一个静态字段 PictureFrame.Instances。现在我可以遍历所有 PictureFrames 以将新的全局模式应用于所有帧。
此外,我还有第二个静态字段 PictureFrame.GlobalImageMode,如果我在所有帧上更改它并在 PictureFrame 的构造函数中读取它,我将在其中设置全局模式。GlobalImageMode 的设置器在 PictureFrame 类中也可以是静态的。