Bonjour,
c'est un problème de conception, mais la solution va certainement être très spécifique au c++, c'est pourquoi je poste ici.
Je travaille sur une application qui, basiquement, affiche des images à l'écran. Ces images ont diverses propriétés. Par exemple elles peuvent bouger, et/ou être cliquées, et/ou être sélectionnées, etc.
J'ai donc décidé d'opter pour une programmation par contrat: j'implémente des interfaces (Movable, Clickable, Selectionnable, etc.) et mes images (Sprites) héritent des ces interfaces en fonctions des besoins.
Jusqu'ici tout va bien, et ça marche plutôt pas mal (je veux dire d'un point de vue de l'architecture: tout s'emboite bien, et les modifications/ajouts de fonctionnalités se passent bien).
Mais maintenant, je voudrais que mes images puissent changer de comportement. Par exemple, immobiliser une image qui était "movable". Il faudrait donc que je lui enlève l'interface Movable. Or ce n'est évidemment pas possible.
Donc en fait, le problème c'est que j'ai des objets qui sont suscpetibles de changer d'état finalement. Ce qui pourrait m'orienter vers l'utilisation du dp state. Mais l'utilisation de ces interfaces est vraiment hyper pratique, propre, et assez élegant je trouve. Et puis là je vous en donne 3, mais en vrai il y en a plus. Je ne voudrais donc pas laisser tomber ces interfaces. Mais alors comment faire pour que mes objets puissent changer d'état?
J'aimerais également éviter de reconstruire mes objets lorsqu'ils changent d'état, car j'utilise un gestionnaire de mémoire pour les images très optimisé mais très peu pratique.
J'ai l'intuition que je vais avoir besoin de templates...
J'espère avoir été clair. Si ça ne l'est pas, dites-le moi je posterai un diagramme, c'est toujours plus parlant.
Partager