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 :

Une classe trop lourde (Interfaces ?)


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 70
    Par défaut Une classe trop lourde (Interfaces ?)
    Bonjour à tous,

    J'ai une classe qui contient les informations d'un utilisateur :

    - Prénom
    - Nom
    - # de téléphone
    - Adresse courriel
    - etc ..

    Dans la section de gauche de mon interface utilisateur, j'ai un listview qui affiche, pour chaque utilisateur, son prénom et son nom.

    Lorsque l'utilisateur sélectionne un des utilisateurs de la liste, la section de droite s'active et affiche les autres informations (# de téléphone, adresse courriel, etc.)

    ... Mais aussi sa photo. Les photos des utilisateurs sont stockées dans la base de données, et bien que ce ne soient pas de très grosses images, pour quelques centaines d'utilisateurs je crainds que ça ne devienne pas trop lourd pour l'accueillir dans une classe. (j'imagine une collection d'objets de type Utilisateur qui contiennent respectivement leur photo ... hmmm pas sûr).

    Dans la plupart des cas, dans d'autres interfaces utilisateurs, j'ai besoin de ma classe Utilisateur mais je n'ai pas besoin de sa photo car j'ai besoin seulement des informations de base.

    Est-ce possible, pour une classe donnée, d'avoir une version des données de base, et dans d'autres cas, une version complète ?

    J'ai lu sur les interfaces et je ne sais pas si c'est cela qui règlerait le problème ?

    Ma question est que, si, dans le cas d'un listview contenant des listviewitems, qui eux possèdent leur instance de classe Utilisateur dans leur propriété Tag, je veux faire afficher la photo d'un d'entre eux, suis-je obligé de trainer la photo pour chaque utilisateur ? Y a-t-il moyen, pour un objet Utilisateur donné, de lui ajouter les informations Photo par la suite ?

    Merci d'avance

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    547
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 547
    Par défaut
    Bonsoir,

    je trouve que la problematique corrrespondrait bien à un DP decorator. Tu aurais une classe fournissant des informations basiques (nom prenom toussa), et un decorateur instancié si tu as besoin des informations plus specifiques sur la personne en question.

    Deuxieme solution, tu pourrais garder l'image dans ta classe utilisateur, mais en la manipulant par une reference faible. L'avantage est ici double puisque tu profites de la capacité des weak-refs à se liberer en cas de penurie, mais en meme temps à retenir leur objet si tout va bien.

    Pour les interfaces, je ne pense pas que ca regle le probleme (ou alors je n'ai pas compris ou tu voulais en venir =p).

    Bref, la solution doit se situer entre les deux, à savoir eviter de trainer X centaines de photos largement sous utilisés, et à contrario, eviter de reinterroger la base à chaque besoin de photos. Donc à premiere vue, les references faibles me paraissent une bonne piste de depart pour ton probleme.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Avec du lazy loading et des weak references en effet ça devrait le faire...
    Par exemple :
    Code C# : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    private WeakReference photo_weak;
    public Image Photo
    {
        get
        {
            if (photo_weak == null || !photo_weak.IsAlive)
            {
                photo_weak = new WeakReference(GetImageFromDatabase());
            }
            return photo_weak.Target as Image;
        }
    }
     
    private Image GetImageFromDatabase()
    {
        ...
    }

  4. #4
    Membre confirmé
    Inscrit en
    Janvier 2007
    Messages
    70
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 70
    Par défaut
    Ok, je vais donc m'instruire sur les Weak References.

    Merci ! :-)

  5. #5
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par cobolfingaz Voir le message
    Ok, je vais donc m'instruire sur les Weak References.

    Merci ! :-)
    A priori tout ce dont tu as besoin est dans le code que j'ai posté. Je te laisse le soin de compléter la fonction GetImageFromDatabase

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

Discussions similaires

  1. Une requête trop lourde pour un site internet
    Par buggen25 dans le forum Requêtes
    Réponses: 0
    Dernier message: 16/09/2013, 12h35
  2. Réponses: 23
    Dernier message: 05/09/2007, 11h53
  3. Réponses: 4
    Dernier message: 13/09/2006, 14h17
  4. [UML][Debutant]Choisir entre une classe et une interface ?
    Par Laurent Dardenne dans le forum Diagrammes de Classes
    Réponses: 11
    Dernier message: 24/04/2006, 20h45
  5. [DC] Modéliser une classe interface + une autre classe
    Par sangei dans le forum Diagrammes de Classes
    Réponses: 11
    Dernier message: 21/12/2005, 22h46

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