Je cherche le meilleur design pour la situation suivante.De nombreux objets avec l'état global et local
Nous avons de nombreux objets d'une classe, par exemple un cadre d'image. Maintenant, chacun des cadres d'image peut afficher 3 types d'image. 1) une face 2) une capture d'écran 3) vide
Cest facile:
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.
}
}
Nous pouvons maintenant créer des cadres d'image avec des images différentes et facilement changer le mode pour chacun.
Maintenant je veux ajouter un setter global pour tous les PictureFrames. Ensuite, chaque nouveau PictureFrame doit prendre le paramètre global par défaut. Il peut plus tard être réglé à travers un différent.
Voici ma solution, mais je veux discuter s'il y en a une meilleure.
J'ai ajouté un champ statique PictureFrame.Instances à la classe PictureFrame où tous les PictureFrames sont accessibles. Maintenant, je peux itérer sur toutes les PictureFrames pour appliquer le nouveau mode global à tous les cadres.
En outre j'ai un deuxième champ statique PictureFrame.GlobalImageMode où je place le mode global si je le change sur toutes les images et le lis dans le constructeur du PictureFrame. Le setter pour le GlobalImageMode peut aussi être statique dans la classe PictureFrame.
Le mode d'image une exigence du système ou du fait de la conception jusqu'à présent? –