Bonjour à tous!

J'ai un petit soucis au niveau de la conception d'une application assez petite en taille. En fait je réalise un projet que j'aimerai mettre sur mon CV, et c'est pour cette raison que j'accorde beaucoup d'importance au choix de ma conception.

L'utilisateur va avoir une interface graphique pour l'exécution d'un algorithme. Il aura la possibilité de choisir entre deux type de stratégies, et il pourra switcher quand il le souhaite: exécution GPU et exécution CPU.

En fait j'avais déjà une solution: j'ai une classe MyClass<T>, et T serait une classe stratégie, par exemple: OnGPUAlgo et OnCPUAlgo. Le soucis, c'est que je ne vois pas l'intérêt de cette méthode, puisqu'au final si l'utilisateur doit pouvoir switcher, je dois créer les deux classes dès le début de l'application, et avoir un booléen pour savoir quelle instance utiliser, plutôt lourd non ?

La deuxième solution que j'avais envisagée et la suivante: soit une classe MyClass, et deux autres classes: MyClassGPU et MyClassCPU qui héritent de MyClass. Je trouve cette architecture trop simpliste, et elle ne reflète pas vraiment la réalité. Cependant elle est simple à mettre en oeuvre, et me permetterait d'avoir:
MyClass* currentClass;
MyClassGPU* GPU;
MyClassCPU* CPU;
et par exemple: currentClass = GPU;

Mais bon, encore une fois je crée les deux objets dès le début. Du coup, laquelle est mieux, la première ou la deuxième ? Si aucune, avez-vous une autre idée ?

Je vous remercie d'avance, et je m'excuse si je me suis mal fait comprendre.