Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1432 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  factoriser une methode

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

factoriser une methode

n°2127250
jetaimerog​er
Posté le 20-02-2012 à 14:11:20  profilanswer
 


Comment je peux factoriser les méthodes en une seule, le type en paramètre est différent mais le type de retour est le même?  
 

Citation :

static public package.machin.State convertState(package.atransformer.State state){
  package.machin stateVision = null;
   
  if (state.name().equals(package.machin.CLEAR.name())) {
   stateVision = package.machin.CLEAR;
  }
  else if (state.name().equals(package.machin.CRITICAL.name())) {
   stateVision = package.machin.CRITICAL;
  }
  else if (state.name().equals(package.machin.ERROR.name())) {
   stateVision = package.machin.ERROR;
  }
  else if (state.name().equals(package.machin.EXPIRED.name())) {
   stateVision = package.machin.EXPIRED;
  }
  else if (state.name().equals(package.machin.OK.name())) {
   stateVision = package.machin.OK;
  }
  else if (state.name().equals(package.machin.WARNING.name())) {
    stateVision = package.machin.WARNING;
  }      
  return stateVision;  
 }
 
 static public package.machin convertState(package.atransformer.bis.State state){
  package.machin stateVision = null;
   
  if (state.name().equals(package.machin.CLEAR.name())) {
   stateVision = package.machin.CLEAR;
  }
  else if (state.name().equals(package.machin.CRITICAL.name())) {
   stateVision = package.machin.CRITICAL;
  }
  else if (state.name().equals(package.machin.ERROR.name())) {
   stateVision = package.machin.ERROR;
  }
  else if (state.name().equals(package.machin.EXPIRED.name())) {
   stateVision = package.machin.EXPIRED;
  }
  else if (state.name().equals(package.machin.OK.name())) {
   stateVision = package.machin.OK;
  }
  else if (state.name().equals(package.machin.WARNING.name())) {
    stateVision = package.machin.WARNING;
  }      
  return stateVision;  
 }

mood
Publicité
Posté le 20-02-2012 à 14:11:20  profilanswer
 

n°2131740
willy le k​id
Posté le 16-03-2012 à 12:47:53  profilanswer
 

Le code que tu donnes n'est pas conventionnel avec des classes dont le nom est entièrement en majuscules
et un nom name() peu courant ( getName() respectera plus les conventions),
mais je pense avoir compris et il faut mettre en oeuvre des méthodes polymorphes.
 
Même nom de méthode, mais nombre de paramètre et type des paramètres différent.
 
Dans ton cas si atransformer.State est une interface

Code :
  1. public interface State {
  2. public static String OK = "OK";
  3. public static String ERROR = "ERROR";
  4. public static String EXPIRED = "EXPIRED";
  5.         // ...
  6. public String name();
  7. }


implémenté par exemple par OK

Code :
  1. public class OK implements atransformer.State {
  2. public  String name(){
  3.  return State.OK;
  4. }
  5. }


ou ERROR

Code :
  1. public class EXPIRED implements atransformer.State {
  2. public String name(){
  3.  return State.EXPIRED;
  4. }
  5. }


 
Tu auras des méthodes convertState

Code :
  1. static public machin.State convertState(OK ok){
  2.    return new StateVision("OK" );
  3. }
  4. static public machin.State convertState(EXPIRED expired){
  5.    return new StateVision("EXPIRED" );
  6. }


 
Pour tester :

Code :
  1. OK ok = new OK();
  2. StateVision visionOk = convertState(ok);
  3. System.out.println(visionOk.vision); // affiche OK
  4. ERROR er = new  ERROR();
  5. StateVision visionEr = convertState(er);
  6. System.out.println(visionEr.vision); //affiche ERROR


 
Cela multiplie le nombre de méthodes mais diminue les possibilités d'erreurs.
Et par ailleurs, le code ne compilera pas si tu introduits un nouveau state sans prévoir la méthode convertState à associer.
 
 


Message édité par willy le kid le 16-03-2012 à 12:55:55

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  factoriser une methode

 

Sujets relatifs
la méthode getsource() avec les JRadiobuttonGraphics et Incompatilité des resultats d'une methode via/sans interfa
Methode permettant d'activer un bouton après sélection dans JTablej'essaie de modifier une div avec jquery et la methode animate
probleme de parametre avec requete préparéee dans une méthode MVCVBA: La méthode de l'objet Worksheet a echoué
[STRUTS] factoriser une action dans le struts-config [RESOLU]Méthode Find avec condition
Probléme avec la methode insert() de DataRepository C# de NetTiers C#erreur methode java
Plus de sujets relatifs à : factoriser une methode


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR