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 :

application multiform : qui doit déclarer ?


Sujet :

C#

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut application multiform : qui doit déclarer ?
    Bonjour,

    J'ai une application avec plusieurs form. Je me demande qui doit déclarer les instances de ces forms.
    Au début, j'ai déclaré tout mes forms dans ma form principale. Puis je me suis rendu compte que j'avais parfois besoin dans certaines d'entre elles d'avoir connaissance d'autres form (pour les afficher par exemple). J'ai alors pensé les déclarer dans une classe statique de sorte que tous le monde puisse y avoir accès.
    J'aimerais savoir si il existe une meilleure solution, un design-pattern pour ce genre de problème.
    J'ai tendance à penser que déclarer une form dans une autre est rarement une bonne solution car c'est lier les 2 entre elles et donc peu évolutif si l'on veut par la suite que d'autre classe puisse accéder à cette form. Qu'en pensez-vous ?

    Merci d'avance pour vos conseils.

    mathmax

  2. #2
    Membre chevronné Avatar de elbj
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Novembre 2004
    Messages
    371
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Services à domicile

    Informations forums :
    Inscription : Novembre 2004
    Messages : 371
    Par défaut
    Bonsoir

    Si ton problème est de n'avoir toujours qu'une seule instance de chaque Form et de limiter les dépendances tu peux essayer le pattern Fabrique avec un soupçon de cache.

    En gros lorsqu'une Form doit en appeler une autre, elle fait appel à la Fabrique qui va vérifier si la nouvelle Form n'existe pas déjà avant de l'instancier et de retourner cette instance à la forme appelante. De plus l'objet retourné sera de type Form et l'appelant pourra utiliser sa méthode Show().

    Evite le statique autant que possible, bien que tu puisses créer une Fabrique Singleton.

    J'ai tendance à penser que déclarer une form dans une autre est rarement une bonne solution car c'est lier les 2 entre elles et donc peu évolutif si l'on veut par la suite que d'autre classe puisse accéder à cette form
    Hum ! J'ai du mal à saisir ce que tu entends par "déclarer".

    En POO tu manipules des classes, et pour plus de commodité tu crées un fichier source par classe. Ces classes sont publiques, donc toutes les classes qui sont dans le même namespace, ou dans des namespaces référencés par des using, peuvent être utilisées.

    Peux-tu détailler ce que tu cherches à faire ?

    Bon courage

    Christophe B.

  3. #3
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    Merci pour ta réponse.

    Mon problème n'est pas de limiter/contrôler la fabrication de form, mais de savoir dans quelle classes ces form doivent être déclarer (autrement dit de quelle classe seront-elle membre).
    Je donne un exemple pour être plus clair :
    J'ai une form principale. Depuis celle-ci on peut afficher/masquer 2 nouvelles forms : form2 et form3. Si je veux pouvoir afficher/masquer ou utiliser n'importe quelle méthode de form3 dans form2, il faut que cette dernière ait connaissance de l'instance de form3. Si form3 est déclarée membre de ma form principale alors form2 n'en a pas connaissance. Voilà pourquoi je me proposait de déclarer toutes ces forms dans une classe statique de sortent qu'elles puissent "se connaître" les unes des autres.
    Est-ce que mon problème est plus clair ?

  4. #4
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Et pourquoi pas simplement obtenir (ou posséder) une référence sur tes forms.

    En gros une référence de ta form2 dans form3 (alors qu'elle a été instancié dans form1 par exemple).

    Le DP proposé par elbj pourrait donc te convenir.

    @elbj : tu pourrais m'en dire plus sur le DP Cache (si c'est bien un DP), je ne le connais pas.


  5. #5
    Rédacteur
    Avatar de SaumonAgile
    Homme Profil pro
    Team leader
    Inscrit en
    Avril 2007
    Messages
    4 028
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Team leader
    Secteur : Conseil

    Informations forums :
    Inscription : Avril 2007
    Messages : 4 028
    Par défaut
    Citation Envoyé par Skyrunner Voir le message
    @elbj : tu pourrais m'en dire plus sur le DP Cache (si c'est bien un DP), je ne le connais pas.
    J'interprete ça comme un factory qui garde en mémoire les instances des fenêtres créées, et qui ne renvoie pas une nouvelle instance à chaque fois. Cela permet de ne pas ouvrir 22 fois la même fenêtre.
    Mais dans ce cas-là, ce n'est plus trop un factory.
    Besoin d'un MessageBox amélioré ? InformationBox pour .NET 1.1, 2.0, 3.0, 3.5, 4.0 sous license Apache 2.0.

    Bonnes pratiques pour les accès aux données
    Débogage efficace en .NET
    LINQ to Objects : l'envers du décor

    Mon profil LinkedIn - MCT - MCPD WinForms - MCTS Applications Distribuées - MCTS WCF - MCTS WCF 4.0 - MCTS SQL Server 2008, Database Development - Mon blog - Twitter

  6. #6
    maa
    maa est déconnecté
    Membre éclairé
    Avatar de maa
    Inscrit en
    Octobre 2005
    Messages
    672
    Détails du profil
    Informations personnelles :
    Âge : 41

    Informations forums :
    Inscription : Octobre 2005
    Messages : 672
    Par défaut
    Et pourquoi pas simplement obtenir (ou posséder) une référence sur tes forms.
    Oui mais alors comment les obtenir ? Je les passes en paramètre lors de la construction de mes forms ? Ca n'est pas un pue lourd, si je me retrouve avec une dizaine de form à passer en paramètre ?

  7. #7
    Expert confirmé
    Avatar de Skyounet
    Homme Profil pro
    Software Engineer
    Inscrit en
    Mars 2005
    Messages
    6 380
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : Software Engineer
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2005
    Messages : 6 380
    Par défaut
    Citation Envoyé par SaumonAgile Voir le message
    J'interprete ça comme un factory qui garde en mémoire les instances des fenêtres créées, et qui ne renvoie pas une nouvelle instance à chaque fois. Cela permet de ne pas ouvrir 22 fois la même fenêtre.
    Mais dans ce cas-là, ce n'est plus trop un factory.
    C'est ce que j'ai aussi pensé, mais oui ça ressemble plus trop à une Factory si du coup elle ne fabrique qu'un objet de chaque type (elle va vite faire faillite la fabrique ).

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/06/2006, 11h44
  2. Comment créer une application Service qui lance un .exe.
    Par yosthegost dans le forum Delphi
    Réponses: 5
    Dernier message: 18/05/2006, 11h37
  3. Probleme Base qui doit souvent etre réparée.
    Par Le_Phasme dans le forum Access
    Réponses: 3
    Dernier message: 04/11/2005, 15h04
  4. Application simple qui pourtant ne marche pas
    Par ThanosT dans le forum C
    Réponses: 8
    Dernier message: 30/09/2005, 21h02
  5. formulaire qui doit appeler plusieurs pages
    Par rohel dans le forum Balisage (X)HTML et validation W3C
    Réponses: 4
    Dernier message: 27/01/2005, 08h59

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