Bonjour,

Je suis en train de m'initier aux sockets en C# et voulant bien faire les choses je voudrais que mon application respecte un minimum les bons patterns de base en développement. N'ayant fait qu'une formation professionnelle de 1 an regroupant aussi bien du dev objet, que de la modélisation BDD en passant par un peu de conception, je n'ai comme base que des bribes en ce qui concerne la modélisation et l'implémentation des bon pattern de programmation.

Mon application est toute simple : Je dispose d’une interface WinFom et d'une couche métier. Entre les 2, j'utilise (comme on me l'a appris) un contrôleur qui assurera la liaison entre l'interface et les objets métiers.

Dans la pratique, lorsque l'on créé un nouveau projet en WinForm C#, le programme lance directement l'interface, c'est à dire une nouvelle instance d'une classe héritée de la classe Form.
Or il me semble, d'après ce que j'ai appris, que pour faire les choses bien, c'est le contrôleur qui doit être le point d'entrée de l'application et qui doit donc gérer l'ouverture/fermeture des différents IHM (fenêtres/formulaires/etc.).
Dans la pratique j'ai donc fait en sorte que le point d'entrée du programme ne fasse que créer une instance du contrôleur (DP singleton utilisé ici). Ce dernier, une fois instancié, se charge de faire apparaitre la première fenêtre. Donc mon contrôleur référence un objet Form.
Le problème est que du coup, mon formulaire n’a pas connaissance du contrôleur et ne peut donc pas lui passer d’information de mise à jour lors d’une action de l’utilisateur, par opposition à la solution qui est de laisser le formulaire comme point d’entrée principale de l’application et de lui faire référencer le contrôleur, cette dernière solution étant il me semble, pas le top en terme de conception.

En cherchant un peu des solutions pour faire en sorte que mon contrôleur puisse rester à l’écoute des modification de mon IHM, je suis tombé sur le design pattern observer. Si j’ai bien compris, dans mon cas, l’observateur serait le contrôleur et le sujet observé le formulaire.

En gros, mon contrôleur devrait donc implémenter une méthode « MiseAJour » recevant l’objet formulaire (?) en paramètre. De l’autre côté, le formulaire devrait donc référencer tous ses observateurs dans une liste (en l’occurrence ici son unique observateur serait le contrôleur) et appeler la méthode de mise à jour de ces derniers à chaque fois que nécessaire.

Donc si je comprends bien, dans ce cas là si je mets en place un DP observer, d’une part le contrôleur référencera le formulaire et de l’autre côté, d’une certain façon, le formulaire référencera le(s) contrôleur(s).

D’où mes 2 questions (Enfin direz vous !) :
Est-ce propre d’un point de vue conception que ces 2 objets se référence mutuellement (car au final c’est qui va m’arriver) ?
Quel est l’avantage de ce DP par rapport au fait de simplement laisser VS2005 faire sa sauce (C.a.d. mettre le formulaire en point d’entrée de l’appli) et référencer mon contrôleur dans le formulaire ?

Merci d’avance pour vos éclaircissements

--Bruno