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

Langage Java Discussion :

Organisation et optimisation de mes classes?


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 88
    Par défaut Organisation et optimisation de mes classes?
    Bonjour,
    Je dois préparer une classe en JAVA capable de transformer du XML en un protocole propre a mon entreprise qui est du type
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    141=5;321=COUCOU;980=user1; etc…
    Ou le code 141 serait la version du protocole utilisé,
    le code 321 le message de bienvenue,
    le code 980 l'utilisateur qui envoie ce message, etc…

    Mon idée est de faire 2 classes :
    - une classe MonProtocole qui dispose des 1000 codes existants pour ce protocole,
    - une classe MonProtocoleConstante, qui est composé de constantes contenant le numéro de code dans le protocole (exemple : public static final int VERSION = 141) pour rendre le code plus lisible dans ma classe MonProtocole

    Il me semble que cette manière n'est pas très optimal : En effet, à chaque fois qu'on instancie la classe MonProtocole, on instancie 1000 attributs, alors que l'on ne va en utiliser peut être que 50…

    Y'a t'il une solution plus optimale ?

    Merci d'avance !

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Février 2007
    Messages
    572
    Détails du profil
    Informations personnelles :
    Localisation : France, Ille et Vilaine (Bretagne)

    Informations forums :
    Inscription : Février 2007
    Messages : 572
    Par défaut
    Les constantes ne sont créées qu'une seule fois, au chargement de la classe MonProtocoleConstante.

    Au lieu de créer une classe MonProtocoleConstante, tu peux aussi en faire une interface, implémentée par MonProtocole.

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Février 2007
    Messages
    190
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 190
    Par défaut
    Les champs statics de MonProtocoleConstante sont initialisés une unique fois.

    Par contre, je n'ai pas compris si les 1000 attributs de MonProtocole sont les constantes définies dans MonProtocoleConstante. S'agit-il d'autres choses?

  4. #4
    Membre Expert
    Avatar de ®om
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    2 815
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 815
    Par défaut
    Tu pourrais utiliser un enum plutôt que de faire des "public static final int VARIABLE = valeur".

    Code : 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
    18
    19
    20
    21
    22
    public enum Const {
        VERSION(141),
        ERREUR(400),
        OK(200);
     
        private int value;
     
        Const(int value) {
            this.value = value;
        }
     
        public int getValue() {
             return value;
        }
     
        // si tu veux que l'affichage de l'enum n'affiche que la valeur
        @Override
        public String toString() {
            return value;
        }
     
    }

  5. #5
    Membre confirmé
    Inscrit en
    Mars 2003
    Messages
    88
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Mars 2003
    Messages : 88
    Par défaut
    Je ne vais pas utiliser le type enum parce que la classe MonProtocoleConstante sera utilisée par d’autres classes dans le futur, et sachant qu’elle contient plus de 1000 constantes, cela sera plus facile à maintenir si cette information est présentes dans une classe seulement.

    Au début, je pensais créer le même nombre d'attributs pour l'objet MonProtocole qu'il y a de constantes dans la classe MonProtocoleConstante, mais en reflechissant un peu, je me suis rendu compte qu'il était plus judicieux de créer un simple attibut de type String et d'ajouter a cette chaine les differents codes de mon protocole :

    Exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    public class MonProtocole {
    	String message;
     
    	(...)
     
    	Public void addField( int field, String value ) {
    		message = message + ";" + field + "=" + value)
    	}
    }
    L'utilisateur appele addField avec comme premier argument (field) une constante de la classe MonProtocoleConstante
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    	myProtocol.addField(MonProtocoleConstante.VERSION, "5") ;
    Bien sur, dans la classe MonProtocoleConstante on a :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public static final int VERSION = 141;

Discussions similaires

  1. [PHP 5.4] Organisation de mes classes
    Par ben01n dans le forum Langage
    Réponses: 3
    Dernier message: 28/05/2014, 14h11
  2. Organiser mes classes
    Par oasiscreation dans le forum Langage
    Réponses: 6
    Dernier message: 22/12/2009, 13h16
  3. Organiser mes classes
    Par TheBlackReverand dans le forum C#
    Réponses: 2
    Dernier message: 10/02/2008, 15h20
  4. [VB.Net 2.0] Comment organiser mes classes ?
    Par arno2000 dans le forum Accès aux données
    Réponses: 1
    Dernier message: 26/06/2006, 15h28
  5. ClassWizard --> comment lui faire reconnaitre mes classes
    Par bigboomshakala dans le forum MFC
    Réponses: 6
    Dernier message: 06/05/2004, 10h50

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