Я ищу лучший дизайн для следующей ситуации.
У нас есть много объектов, образующих один класс, например, рамку рисунка. Теперь каждая из рамок изображения может отображать 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. Тогда каждый новый PictureFrame должен принимать глобальную настройку как настройку по умолчанию. Позже он может быть настроен на другое сквозное.
Вот мое решение, но я хочу обсудить, есть ли лучшее.
Я добавил статическое поле PictureFrame.Instances в класс PictureFrame, где доступны все PictureFrame. Теперь я могу перебрать все PictureFrames для применения нового глобального режима ко всем кадрам.
Кроме того, у меня есть второе статическое поле PictureFrame.GlobalImageMode, где я устанавливаю глобальный режим, если я изменяю его во всех кадрах и читаю его в конструкторе PictureFrame. Сеттер для GlobalImageMode также может быть статическим в классе PictureFrame.