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

C++ Discussion :

Meilleur manière de faire un "manager"


Sujet :

C++

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut Meilleur manière de faire un "manager"
    Bonjour,

    Je ne suis pas sûr que mon interrogation soit a sa place dans cette partie du forum, mais bon, je me lance quand même.

    Je buche sur un petit moteur de jeu, j'ai commencé il y a un mois environ, et depuis hier je passe du C au C++, pour de multiple raison qui me son personnel. Le soucis c'est que je n'est pas beaucoup d'expérience dans la conception orienté objet, ce projet est un moyen pour moi, d'apprendre. Ce qui m'amène a ma question: Quel est la meilleur manière de faire un "manager", je m'explique.

    Pour le moment, j'ai une classe Font, qui contient les données relative a une police de caractère (qui encapsule entre autre le nécessaire pour utilise freeType sous openGL ). Cette classe a des attributs static qui permette le management.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Font *title = new Font("arial.tff", 65);
    Font *text = new Font("arial.tff", 12);
    Font::load();
     
    [...]
     
    Font::unload();
    Le constructeur Font::Font(String file, uint_t size) "précharge" les fonts et les ajoutent dans une liste chainé. Après l'instanciation les fonts ne sont pas encore utilisable de suite.

    void Font::load(void) (qui ne peut être appelé qu'une elle fois) "charge réellement" les données, et rempli les instances de Font créé précédemment et les rend utilisable.

    void Font::unload(void), elle, détruit toutes les instances de Font.

    Ce système vous semble bien ? C'est peut être un design pattern, ou un truc du genre.
    Merci d'avance.

  2. #2
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Ca ne me choque pas comme utilisation. L'autre alternative serait de remplacer les fonctions membres statiques par un gestionnaire singleton.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    FontManager& Mngr = FontManager::GetInstance();
    Font *title = Mngr.Create("arial.tff", 65);
    Font *text  = Mngr.Create("arial.tff", 12);
    Mngr.LoadAll();
     
    [...]
     
    Mngr.UnloadAll();
    C'est parfois préférable aux variables et fonctions statiques, notamment lorsque tu as des problèmes de durée de vie des objets.

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci pour cette réponse. ( Rapide de surcroit )

    J'avais pensé a utiliser un singleton, mais j'ai pas vraiment trouvé d'argument favorable, sauf peut être la propreté de la classe Font. Le désavantage, c'est que cela alourdit l'utilisation du la classe managé. Vu que je pense utilisé ce système pour la majorité des classes de mon moteur, je souhaite rendre l'utilisation la plus intuitive possible.

    Quels sont les avantages du singleton manager ?

    PostScriptum: loadAll c'est vrais que c'est mieux que load

  4. #4
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    Quels sont les avantages du singleton manager ?
    Ca dépend de ce que tu vas lui faire faire. Par exemple il peut, lorsque tu demandes une police qui a déjà été chargée, renvoyer un pointeur sur la même instance. Il peut aussi gérer la bibliothèque sous-jacente (FreeType) correctement, etc.

    Et puis comme je te l'ai dit, avoir tout en variable statique n'est parfois pas souhaitable dans la mesure où tu ne gères pas bien la construction et la destruction de celles-ci.

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Merci beaucoup, je vais tourner cela dans ma tête.

    Malgré tout s'il y a d'autre avis, je suis preneur

  6. #6
    r0d
    r0d est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    4 265
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 4 265
    Points : 6 686
    Points
    6 686
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Yellow.fr
    Malgré tout s'il y a d'autre avis
    Dés qu'on s'approche un tant soit peu du domaine du jeu vidéo, l'avis de Laurent est toujours le meilleur

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2007
    Messages : 7
    Points : 6
    Points
    6
    Par défaut
    Bah, en fait c'est plus un question de conception orienté objet qu'une question de gameDev. De plus, je toujours préfère avoir plusieurs avis, et surtout d'autres solutions auxquelles je n'aurais pas forcément penser.

    On ne sait jamais

    Après, une petite réflection, je pense utilisé un compromit: faire un gestionnaire singleton afin de nettoyer les classes géré des attributs statiques, mais malgré cela, rendre le l'utilisation de ce manager implicite.

  8. #8
    Rédacteur
    Avatar de Laurent Gomila
    Profil pro
    Développeur informatique
    Inscrit en
    Avril 2003
    Messages
    10 651
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2003
    Messages : 10 651
    Points : 15 920
    Points
    15 920
    Par défaut
    és qu'on s'approche un tant soit peu du domaine du jeu vidéo, l'avis de Laurent est toujours le meilleur
    Ouhla faut surtout pas dire ça

    Après, une petite réflection, je pense utilisé un compromit: faire un gestionnaire singleton afin de nettoyer les classes géré des attributs statiques, mais malgré cela, rendre le l'utilisation de ce manager implicite.
    C'est un très bon plan
    Personnellement c'est ce que j'essaye toujours de faire également.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Meilleurs manières de faire une matrice interactive ?
    Par Bruno13 dans le forum Ext JS / Sencha
    Réponses: 8
    Dernier message: 13/03/2015, 12h10
  2. Splash screen une meilleur manière de faire ?
    Par manu f dans le forum AWT/Swing
    Réponses: 1
    Dernier message: 21/05/2009, 11h40

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