En attendant les améliorations de Java7... Comment gérez-vous les propriétés sur vos objets et en particulier la possibilité d'écouter les changements de valeurs des propriétés ?
Merci pour vos réponses !
Toine
Version imprimable
En attendant les améliorations de Java7... Comment gérez-vous les propriétés sur vos objets et en particulier la possibilité d'écouter les changements de valeurs des propriétés ?
Merci pour vos réponses !
Toine
JGoodies Bindings.
Je ne connaissais pas, je vais voir ça !
Anthony
En fait, je ne suis pas sûr que ça réponde à mes besoins... En fait, pour être plus concret, je vous éviter d'alourdir le code de mes beans à cause de la gestion des évènements.
Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 public class MyBean { // Note you don't HAVE to use this class - you can use // java.beans.PropertyChangeSupport if you want. private ExtendedPropertyChangeSupport changeSupport = new ExtendedPropertyChangeSupport( this); private boolean booleanValue; private String stringValue; public boolean getBooleanValue() { return booleanValue; } public void setBooleanValue(boolean newValue) { System.out.println("Boolean value set: " +newValue); boolean oldValue = booleanValue; booleanValue = newValue; changeSupport.firePropertyChange("booleanValue", oldValue, newValue); } public void addPropertyChangeListener(PropertyChangeListener x) { changeSupport.addPropertyChangeListener(x); } public void removePropertyChangeListener(PropertyChangeListener x) { changeSupport.removePropertyChangeListener(x); } public String getStringValue() { return stringValue; } public void setStringValue(String newValue) { System.out.println("String value set: "+ newValue); String oldValue = stringValue; this.stringValue = newValue; changeSupport.firePropertyChange("stringValue", oldValue, newValue); } }
Coucou,
Oui j'ai récupérer le code d'un article traitant de JGoodies Bindings, mais il correspond à un Bean classique avec gestion d'évènements.
JGoodies Bindings n'intervient pas à ce niveau si j'ai bien compris ? Mais plutôt après non ?
Ok, j'ai regardé le code de la classe Model... Elle aide effectivement un peu un proposant quelques méthodes sympa sans révolutionner le principe.
Connaissez-vous le projet "Attributes" d'Apache Commons ?
Ta solution est intrusive. Dommage quand on a déjà établi un modèle métier qu'on veut indépendant de toute dépendance.
Le mieux est qd même de recourir à un aspect enrichissant la cible et produisant les évènements sur changement. On peut en implémentation s'appuyer sur le mécanisme JGoodies.
Tu as déjà implémenté ou aperçu un mécanisme de gestion d'évènements géré par un aspect?
J'ai un peu peur des performances de ce genre de solution ?
Effectivement, Attributes peut paraitre vieux jeu mais il propose des choses intéresantes qui ne se trouvent pas encore en standard (ça devrait venir avec Java 7 et une gestion poussée j'espère des propriétés)
Pour les perfs ca reste très performant, puisque à l'issue du processus de tissage tu te retrouve avec un byte code quasi-similaire à celui que tu aurais produit toi même en écrivant le mécanisme évènementiel dans ton source.
C'est quelque chose que j'ai déjà mis en oeuvre, avec un tissage dynamique (ltw) qui coute, il est vrai, cher au démarrage. Mais rien ne t'interdit de faire le tissage à la compilation. Le très gros intérêt est que tu n'écrit qu'un unique aspect que tu tisse ensuite avec les classes métiers de ton choix.
Ok c'est une approche intéressante, je regarderai ça ;)