Bonjour à tous,

Je suis face à un soucis de conception que je n'arrive pas vraiment à résoudre.
Je n'arrive pas à trouver une solution efficace, qui est facilement maintenable.
La solution que j'ai élaboré et utilisé est vraiment très compliquée à maintenir, et les ajouts sont longs, trop long.

Donc voici le soucis :

Je dispose d'objets qui sont essentiellements graphiques. C'est à dire que je dois souvent lire une image pour determiner quel est le type d'objet auquel je fais face.
Je dois également detecter ensuite avec précisions les propriétés de cette objet, encore avec des méthodes de detection d'image.

J'utilise Emgu et C# pour faire ceci.

En gros, j'ai des modules, qui sont toujours associés à une image.
Je dois pour instancié le bon type de module, detecter l'image, et la comparer avec des images contenues dans une BDD.
Les modules ont des propriétés et des méthodes communes, mais en fonction du type de module, je peux avoir des méthodes et des propriétés supplémentaires. Ces propriétés sont souvent initialisées par des détections d'image, mais pas seulement.

J'ai également une classe qui dispose de méthodes qui prennent en paramètre des modules, et utilise les propriétés communes.

A cause du type de l'application, je suis souvent amené à modifier les facons d'initialiser ces modules, et je dois également ajouter regulièrement des nouveaux modules.

La conception que je vois actuellement est donc la suivante :

Une classe abstraite module, avec les propriétés et méthodes communes.
Des classes concrètes héritant de Module telle que CarModule, TractorModule.

Pour instancier mes Modules, j'utilise un objet FactoryModule, qui a des méthodes pour me renvoyer le module approprié, en fonction des comparaisons d'images.

Le soucis vient ensuite du fait que je ne sais pas comment je pourrait faire l'initialisation correcte, et proprement des toutes les propriétés du ConcreteModule en question. Dans le constructeur privé du ConcreteModule ?

Ou devrais-je utiliser un builder pour faire ceci ?

Je ne sais pas si mon soucis est assez explicité, je dispose peut etre même de la solution, mais je voulais simplement votre avis concernant ceci.
Ce sont mes debuts dans l'utilisation des designs patterns, excusez moi pour toute incohérence.



Cordialement,

Squelos