IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Design Patterns Discussion :

Moteur graphique : Singleton est-il un bon pattern ?


Sujet :

Design Patterns

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    39
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 39
    Par défaut Moteur graphique : Singleton est-il un bon pattern ?
    Bonjour,

    Je suis actuellement en train de réaliser le développement d'une application dans laquelle je vais implémenter un moteur graphique, ainsi qu'un moteur de gestion d'entrées/sorties, et un moteur audio.

    L'application est développée en C++ et donc bien entendu orientée objet, et j'aurais aimé savoir comment vous auriez envisagé de rendre le moteur graphique "disponible" pour toute l'appli, l'utilisation du singleton vous parait-elle adaptée à ce type de situation ?

    Je vous remercie de vos remarques et réponses, pardon si le sujet n'est pas très clairement exprimé

  2. #2
    Membre Expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Par défaut
    Le pattern Singleton permet de t'assurer de l'existence d'une unique instance d'un objet, cela ne rend pas forcément cet objet 'disponible' de partout.

  3. #3
    ndp
    ndp est déconnecté
    Membre expérimenté Avatar de ndp
    Profil pro
    Inscrit en
    Mars 2003
    Messages
    227
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2003
    Messages : 227
    Par défaut
    salut,

    Citation Envoyé par hed62 Voir le message
    Le pattern Singleton permet de t'assurer de l'existence d'une unique instance d'un objet, cela ne rend pas forcément cet objet 'disponible' de partout.
    Non pas tout a fait. Il y a vraiment ces deux aspect dans le Singleton
    1) l'instance unique
    2) disponibilite

    Si tu oublies le deuxieme point, c'est-a-dire le fait de definir via le Singleton des variables globales, tu perds de vue cet effet de bord 'dangereux'

    Citation Envoyé par Takusen Voir le message
    ...
    L'application est développée en C++ et donc bien entendu orientée objet, et j'aurais aimé savoir comment vous auriez envisagé de rendre le moteur graphique "disponible" pour toute l'appli, l'utilisation du singleton vous parait-elle adaptée à ce type de situation ?
    ...
    il faudrait que tu precises ca: "rendre le moteur graphique "disponible" pour toute l'appli".
    La facon plus classique de 'rendre disponible' un objet,c'est de passer une reference vers cet objet a celui qui en a besoin.

  4. #4
    Membre éprouvé
    Profil pro
    Inscrit en
    Février 2004
    Messages
    1 825
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2004
    Messages : 1 825
    Par défaut
    J'avais eu ce soucis, pour faire également un moteur graphique.

    Ce qui est dangereux avec les singleton, c'est de tomber dans la singletonite.
    Le mieux ai que ton moteur graphique propose un gestionnaire (genre CGraphicManager) qui est un singleton forçant l'utilisateur de ce moteur à ne passer que par lui.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    CLight myLight;
    CGraphicManager::Instance().CreateLight(&myLight);
    
    myLight.SetAmbient(RGB(255, 255, 255));
    CGraphicManager::Instance().SetLight(&myLight);
    CGraphicManager s'en remettra à sa gestion des lumières (interne et non globale) sans que l'utilisateur n'ai à faire CLightManager::Instance().CreateLight() puis CGraphicManager::Instance().SetLight()

    Pour plus de confort, tu peux faire un typedef pour utiliser plutôt GraphicManager.Fonction() plutôt que CGraphicManager::Instance().Fonction()

Discussions similaires

  1. definition d'un moteur graphique
    Par elekis dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 13/11/2012, 15h36
  2. Je cherche un bon moteur graphique 2D, voir de jeu 2D
    Par goof_22 dans le forum API graphiques
    Réponses: 3
    Dernier message: 18/06/2010, 06h29
  3. Tomcat est il un bon serveur d'aplication ?
    Par abd21 dans le forum Tomcat et TomEE
    Réponses: 9
    Dernier message: 27/09/2006, 16h23
  4. Java + PHP ! Est ce un bon choix?
    Par condor_01 dans le forum Développement Web en Java
    Réponses: 5
    Dernier message: 28/07/2006, 10h19
  5. Réponses: 15
    Dernier message: 16/05/2005, 10h31

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo