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 :

Java : Problème d'héritage


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Par défaut Java : Problème d'héritage
    Bonjour,

    J'ai un petit problème de design de mon application et je recherche un(des) conseil(s) sur la meilleure méthode d'implémentation.

    Je dois utiliser un package de traitement de texte dont je ne suis pas maître. Dans ce package il y a 3 classes principales :
    A_Abstract ,A_HTML et A_RTF. Ces deux dernières classes héritent de A_Abstract.

    Mon application doit surcharger des méthodes de A_Abstract. Mais elles doivent hériter soit de A_HTML soit de A_RTF selon l'EditorKit utilisé dans un JTextPane.
    Pour l'instant j'ai créé deux classes différentes B_HTLM qui hérite de A_HTML et B_RTF qui hérite de A_RTF.

    Pour l'instant tout est OK. Cependant les méthodes de B_HTLM et B_RTF sont exactement les mêmes.
    Je recherche un moyen d'éviter cette redondance pour des raisons de maintenance . J'avais pensé à écrire une classe commune qui ne contiendrait que les méthodes qui seraient invoquées en passant des paramètres. Mais ce n'est pas possible sans jongler avec des dizaines de valeurs et à rendre le code très difficile à lire.

    On m'a suggéré d'utiliser un Factory plutôt que de passer par l'héritage, mais je ne comprends pas comment je pourrais faire.

    Toutes les idées seront les bienvenues. Merci d'avance.

    Gégé

  2. #2
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    tu pourra pas faire ça proprement. Pour le faire proprement, il faudrait mettre ta classe entre A_Abstract et ses filles, ce qui n'est pas possible sans changer l'héritage de A_HTML et A_RTF.

    "Eventuellement", tu peux essayer d'utiliser de l'aop suivant ce que tu souhaite faire, afin d'injecter dynamiquement du code autour des méthodes visées. Mais jongler avec de l'aop n'est pas simple pour un débutant.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Décembre 2009
    Messages
    265
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2009
    Messages : 265
    Par défaut
    OUI c'est bien ce que je pensais. Merci

    Gégé

  4. #4
    Membre Expert
    Avatar de professeur shadoko
    Homme Profil pro
    retraité nostalgique Java SE
    Inscrit en
    Juillet 2006
    Messages
    1 257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 76
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : retraité nostalgique Java SE

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 257
    Par défaut
    je dis peut être des bétises mais une variante du décorateur peut-être:
    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
     
    Decorator_HTML extends A_HTML {
       protected final A_Abstract mutuel ;
       public Decorator_HTML( A_Abstract mutuel) {
          this.mutuel = mutuel ;
          ....
       }
       //délegation des méthodes utiles
     
    }
     
    B_HTML extends Decorator_HTML {
     
       public B_HTML () {
          super(new ClassCodeCommunFilleDeA_Abstract())
      }
      // corrections éventuelles des méthodes
      }
    non?

Discussions similaires

  1. [Composite] [Java] problème de conception, multi héritage, composite ?
    Par phoenix_stealer dans le forum Design Patterns
    Réponses: 2
    Dernier message: 13/11/2013, 17h47
  2. Héritage Java (problème avec la classe test)
    Par adil-01 dans le forum Général Java
    Réponses: 7
    Dernier message: 04/12/2011, 16h25
  3. Problème d'héritage java
    Par Gordon Freeman dans le forum Langage
    Réponses: 11
    Dernier message: 29/06/2009, 18h03
  4. Java => problème héritage
    Par spotlessmind dans le forum Langage
    Réponses: 1
    Dernier message: 23/11/2007, 22h53
  5. [Eclipse][Java]Problème de compilation sur CTRL+S
    Par ZeKiD dans le forum Eclipse Java
    Réponses: 5
    Dernier message: 27/05/2004, 11h49

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