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 :

Abstract / Static : pb conception.


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Par défaut Abstract / Static : pb conception.
    Bonjour,
    j'ai un soucis au niveau plutôt conceptuel et je n'arrive pas à m'en dépatouiller ou trouver une solution élégante.

    Donc je schématise :
    j'ai une classe abstraite A
    Celle ci a une méthode static getMessage()

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    public abstract class A {
     
       protected static url;
     
       public static String getMessage(String key) {
               getBundle(url).getString(key);
       }
     
       // c'est un code exemple, donc je ne décris pas la méthode getBundle
    }
    Ensuite j'ai plusieurs classes B, C, D qui héritent de A.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    public class B extends A {
    	private static final String BUNDLE_NAME = "eg";
     
    	static{
    		url = BUNDLE_NAME;
    	}
     
    	private B() {
    	}
     
    }
    Dans ma méthode getMessage() j'ai besoin d'une variable (url) propre à chaque classes filles (B,C,D) mais là ça ne fonctionne évidemment pas.

    Soucis : évidemment on ne peut définir de propriété abstract et static à la fois, ça n'a aucun sens. Mais comment faire pour ça que ça fonctionne?

    J'ai tenté de regarder du coté du design pattern singleton mais je ne vois pas non plus comment m'en sortir, idem avec interface, ...
    Mais peut être un pattern que je ne vois pas ou une solution toute simple auquel je ne pense pas! (un genre de mot clé "static::" à la PHP 5.3?)

    Merci.

  2. #2
    Membre expérimenté Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Par défaut
    Tu te pose peut etre pas la bonne question, pourquoi as tu declarer getMessage() en statique?

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Par défaut
    Je me suis demandé aussi si le besoin était pas inadapté.
    Mais en gros ce sont des classes pour récupérer un message dans des fichiers de properties.

    Donc faire une instance n'aurait pas de sens et alourdirait le code pour pas grand chose.

    Là le but c'est faire dans chaque projet différent un B.getMessage("monId"). Et bien sûr éviter de redéfinir le corps de la classe A dans toutes mes classes.

  4. #4
    Membre expérimenté Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Par défaut
    A propos on peu avoir le type de url?
    et une declaration "simplifiée" de getBundle()?

  5. #5
    Membre expérimenté Avatar de Torg666
    Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2008
    Messages
    230
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Novembre 2008
    Messages : 230
    Par défaut
    Attend en gros ce que tu veux faire c'est une variable pour A, B, C... et que dans chaque classe fille tu est une valeur differente... c'est pas possible en statique (si je me tompe pas) car si tu modifie url dans B tu va la modifier aussi dans A et par consequence dans C car c'est une fille de A et url est un propriete de A pas de B ou C

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    60
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Juin 2006
    Messages : 60
    Par défaut
    Humm url et getBundle n'ont pas d'importance au niveau conceptuel. C'est du code qui fonctionne et le soucis vient de la variable et pas du code.

    Et oui je sais bien qu'une variable statique est propre à la classe en elle même et pas à l'instance (mais de toute façon je ne travaille pas ici en instance). C'est bien là mon soucis et ce que j'essaye de "contourner".

    D'où un test pour voir si un design pattern singleton (avec possibilité d'une interface à coté) pouvait me sortir de là mais (sauf erreur de ma part) ce n'est pas le cas.

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

Discussions similaires

  1. [PHP 5.3] abstract static function génère un E_STRICT, pourquoi?
    Par glen1789 dans le forum Langage
    Réponses: 11
    Dernier message: 15/05/2012, 21h44
  2. [PHP 5.3] Créer une méthode abstract static.
    Par Rakken dans le forum Langage
    Réponses: 2
    Dernier message: 01/05/2011, 15h32
  3. Une méthode "abstract static" ?
    Par Exsilius dans le forum C#
    Réponses: 4
    Dernier message: 01/02/2007, 14h05
  4. [POO] Classe Abstract : problème de conception
    Par viviboss dans le forum Langage
    Réponses: 22
    Dernier message: 14/12/2006, 15h37
  5. Réponses: 9
    Dernier message: 29/06/2004, 08h40

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