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

AWT/Swing Java Discussion :

[Conception]application swing avec SGBD


Sujet :

AWT/Swing Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut [Conception]application swing avec SGBD
    Bonjour tout le monde

    Je m'interroge sur la meilleure manière de concevoir ET implémenter une application Java "standalone" utilisant Swing et un SGBD.

    Voici grosso modo ma manière de faire :
    • je crée une classe pour l'accés à la BD, cette classe est un singleton
    • Je mets aussi la fenetre principale en singleton
    • Je crée un médiateur (listener) pour la fenetre principale et les boites de dialogue
    • le mediateur de la fenetre principale est aussi un singleton
    • Chaque médiateur a la charge de récolter les info de l'IHM et crée un thread ,si besoin est , pour effectuer le traitement et mettre à jour l'IHM


    Un des (nombreux ? ) problèmes de cette façon de procéder est que je me retrouve avec des singletons qui se référencent mutuellement.

    Voilà, je voudrais avoir votre avis sur ma manière de faire et connaitre la votre.

    J'espère que c'est clair.Dans tous les cas je suis à votre disposition pour de plus amples détails.

    Merci beaucoup pour votre aide


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,

    Citation Envoyé par afrikha
    Un des (nombreux ? ) problèmes de cette façon de procéder est que je me retrouve avec des singletons qui se référencent mutuellement.
    Personnellement je prefère n'utiliser qu'une seule classe Singleton qui représente mon application. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    public class MonApplication {
     
        private static final MonApplication INSTANCE = new MonApplication();
     
        private MonApplication() {
            // do nothing
        }
     
        public static MonApplication getInstance() {
            return MonApplication.INSTANCE;
        }
    }
    Ce singleton comporte en plus toutes les autres instances "uniques" de l'application, mais ce ne sont pas forcément des singleton mais de simple champs. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        /** La frame principale de l'application (unique) */
        private MainFrame mainFrame;
        /** Le DAO permettant d'accéder aux données via JDBC (unique) */
        private DAO dao;
     
        public MainFrame mainFrame() {
            return this.mainFrame;
        }
     
        public DAO dao() {
            return this.dao;
        }
    Le singleton comporte également une méthode private chargé d'initialiser tous les attributs de mon Singleton dans le bon ordre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
        private void initialize(String[] args) {
            this.dao = new MyDAOImplementation();
            this.mainFrame = new MainFrame();
            // Affiche la frame :
            SwingUtilities.invokeLater(new Runnable() {
                public void run() {
                    MonApplication.this.mainFrame.setVisible(true);
                }
            });
     
            // etc...
        }
    Je n'utilise pas le constructeur du Singleton pour cela car on peut se retrouver dans une erreur cyclique (par exemple le constructeur appelle new MainFrame() qui appelle getInstance() qui rappelle le constructeur car on n'est toujours pas retourné du précédent, etc.).

    La méthode initialize() est private car elle ne doit être utilisé qu'un seule et unique fois au démarrage de l'application. C'est pourquoi mon main() se trouve dans la classe Singleton, et effectue généralement quelque chose du style :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        public static void main(String[] args) {
            MonApplication.getInstance().initialize(args);
        }
    Le plus dur étant de bien séparer les différentes couches, afin d'éviter d'avoir des références croisées lors de l'initialisation...


    a++

  3. #3
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    J'arrive un peu tard après la bataille et je vois déja tout les corps enterrés et je n'ai rien de mieux à dire. Si il fait beau.

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par sinok
    J'arrive un peu tard après la bataille et je vois déja tout les corps enterrés et je n'ai rien de mieux à dire. Si il fait beau.
    Ben non au contraire il n'y a pas de solution miracle !!!

    a++

  5. #5
    Expert confirmé
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Citation Envoyé par adiGuba
    Ben non au contraire il n'y a pas de solution miracle !!!

    a++
    C'est sûr, mais bon celle que j'utilise se rapproche de ce que tu as expliqué, d'où mon post

  6. #6
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Je n'ai pas trouvé de reponse à ma question
    Citation Envoyé par afrikha
    Par exemple comment faire pour le mediateur de la main frame ? la frame a besoin de connaitre le médiateur et le médiateur a besoin de connaitre la frame !, qui initialiser en premier ?


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  7. #7
    Membre Expert
    Avatar de afrikha
    Profil pro
    Étudiant
    Inscrit en
    Août 2005
    Messages
    1 600
    Détails du profil
    Informations personnelles :
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Août 2005
    Messages : 1 600
    Par défaut
    Merci adiGuba pour cette participation très enrichissante

    Citation Envoyé par adiGuba
    Le plus dur étant de bien séparer les différentes couches, afin d'éviter d'avoir des références croisées lors de l'initialisation...
    Oui, c'est vrai que c'est la partie un peu "critique" : Par exemple comment faire pour le mediateur de la main frame ? la frame a besoin de connaitre le médiateur et le médiateur a besoin de connaitre la frame !, qui initialiser en premier ?

    Merci encore une fois


    Mes publications
    Lisez
    Les régles du forum
    Pensez au bouton

  8. #8
    Membre chevronné Avatar de spekal
    Inscrit en
    Mai 2005
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Mai 2005
    Messages : 502
    Par défaut
    Pour ma part :

    - aucun singleton (je ne vois absolument pas à quoi ils servent)

    - un package d'accés bdd et de données bdd (en gros une classe par table)

    - un package swing

    - un package main, configuration, etc.

    Le package bdd ne référencie jamais (ou presque) (ou par erreur) ce qu'il y a dans les autres.

    Le package main peut connaître tout ce qu'il y a dans les autres.

    Pour le package GUI, je crée, dans ce package, une interface d'accés (sorte de driver), que une classe du package main met en oeuvre, grâce à laquelle un objet GUI peut activer un service du package main. Le package GUI ne connait donc le package main que par cet intermédiaire.

    Heu... c'est clair ??

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

Discussions similaires

  1. Comment developper une application Swing avec Eclipse
    Par Haya-Jiji dans le forum Eclipse Java
    Réponses: 1
    Dernier message: 16/04/2009, 03h02
  2. Développement application Web avec sgbd
    Par fabou3377 dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 04/02/2009, 14h15
  3. lancer un application swing avec windows et linux ?
    Par linuxien_tun dans le forum Débuter
    Réponses: 5
    Dernier message: 23/12/2008, 13h59
  4. probleme pour application swing avec netbaens
    Par Eric_dronet dans le forum NetBeans
    Réponses: 1
    Dernier message: 05/05/2008, 15h37
  5. Conception application Swing
    Par Arnich dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 14/01/2008, 23h15

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