Le commentaire que j'ai mis au dessus est clair: on suppose un prix du jour constant. Il n'y a donc aucun raison de pouvoir changer ce prix du jour (je n'ai pas mis de setter d'ailleurs).
Version imprimable
Le commentaire que j'ai mis au dessus est clair: on suppose un prix du jour constant. Il n'y a donc aucun raison de pouvoir changer ce prix du jour (je n'ai pas mis de setter d'ailleurs).
Je pense que pour gérer ca, le plus simple est de déporter cette gestion dans une autre classe.
e.g
Et la Volaille deviendrait un truc comme caCode:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 final class Cours { private static final Map<Class<? extends Volaille>, BigDecimal> ALL_COURS = new HashMap<Class<? extends Volaille>, BigDecimal>(); private Cours() { } public static BigDecimal duJour(Class<? extends Volaille> clazz) { return ALL_COURS.get(clazz); } public static void change(Class<? extends Volaille> clazz, BigDecimal newCours) { ALL_COURS.put(clazz, newCours); } }
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 public abstract class Volaille { public BigDecimal getPrixJour() { // si besoin d un prix par défaut if (Cours.duJour(this.getClass()) == null) { Cours.change(this.getClass(), getPrixParDefaut()); } // // return Cours.duJour(this.getClass()) == null ? BigDecimal.ZERO : Cours.duJour(this.getClass()); } public void setPrixJour(BigDecimal newCoursDuJour) { Cours.change(this.getClass(), newCoursDuJour); } // si besoin d un prix par défaut public abstract BigDecimal getPrixParDefaut(); }
C'est claire : )
Je vous remercie infiniment pour vos participations intéressantes, vos idées, votre débat, J’espère vous retrouver dans une autre occasion.
@+ ; )