Bonjour à tous,
je suis en train de concevoir un petit script qui doit pouvoir utiliser plusieurs types d'interface utilisateur (en l'occurence console, gtk, et peut être qt...).
Le tout se fait en python mais ma problématique est indépendante du langage (du moment qu'il est OO).

J'ai conçu mon script avec deux classes (pour l'instant):
- UIC (l'interface console)
- Sync (l'objet qui exécute)

Au démarrage du programme, j'appelle UIC, qui lui même a pour attribut un objet de classe Sync,qu'il instancie.
Or, je me demandais si c'était la bonne conception:
En effet, les méthodes de Sync renvoient des entiers correpondants au résultat. UIC en affiche le message correspondant.
L'ennui, c'est que lorsque j'implémenterai de nouvelles interfaces utilisateurs, je devrai refaire le même système (des if géants pour afficher les mêmes messages mais de façon différentes).

J'ai réfléchi à deux solutions:
- Sync peut disposer d'une référence vers l'objet UIC qui l'a appellé. Ainsi, il suffit de faire : self.ui.show_msg(monmessage). Mais cela ne me semble pas forcément propre (l'objet de classe UIC a un attribut de class Sync, qui lui même a un attribut de classe UIC vers l'objet appellant).
- Au démarrage, j'appelle Sync qui a un attribut ui menant vers un objet du type de l'UI nécessaire. L'appel se ferait de la même façon que précédemment, mais cela serait plus propre. Là, le problème serait évenementiel : en console, par exemple, je devrais demander directement via mon objet Sync ce que je dois faire, car c'est à l'ui de parser les arguments de la ligne de commande... Et en mode graphique, le problème reviendrait, un clic sur un bouton appelle une méthode de UI... qui doit alors appeler une méthode de Sync, et par conséquent avoir un attribut référence vers celui-ci...

Je pense me prendre trop la tête et être mal parti dès le départ... Comment intégre-t-on l'interface utilisateur généralement ?