Question concernant le tuto de Baptiste Wicht
Bonjour,
Mes questions concernent aussi le tuto de Baptiste Wicht (http://baptiste-wicht.developpez.com...onception/mvc/ )
Dans ce tuto le modèle VolumeModel contient une liste de EventListenerList .
Ma première question est une demande confirmation, à savoir , si j'ai bien compris cette liste EventListenerList permet au modèle de notifier ses observer.
Si c'est effectivement le cas, pourquoi ne pas tout simplement faire que la classe VolumeModel n'étende la classe Observable ?
Les méthodes notifyObservers et addObserver de la classe Observable permettraient d'éviter d'implémenter respectivement les méthodes public void fireModelChanged et addVolumeListener de la classe VolumeModel
Je suppose que si cela été fait ainsi c'est qu'il y a sans doute une bonne raison, si quelqu'un peut éclairer ma lanterne ...
merci d'avance
je me permet de remettre le code Baptiste Wicht pour que cela soit plus clair :
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 41 42 43 44 45
| import javax.swing.event.EventListenerList;
public class VolumeModel {
private int volume;
private EventListenerList listeners;
public VolumeModel(){
this(0);
}
public VolumeModel(int volume){
super();
this.volume = volume;
listeners = new EventListenerList();
}
public int getVolume() {
return volume;
}
public void setVolume(int volume) {
this.volume = volume;
fireVolumeChanged();
}
public void addVolumeListener(VolumeListener listener){
listeners.add(VolumeListener.class, listener);
}
public void removeVolumeListener(VolumeListener l){
listeners.remove(VolumeListener.class, l);
}
public void fireVolumeChanged(){
VolumeListener[] listenerList = (VolumeListener[])listeners.getListeners(VolumeListener.class);
for(VolumeListener listener : listenerList){
listener.volumeChanged(new VolumeChangedEvent(this, getVolume()));
}
}
} |
gestion des evt du model + hibernate +spring
Bonsoir
je continue de profiter du post de alatox (que je prie de m'excuser car je détourne un peu l'origine de son post :oops:) sur le tuto de Baptiste Wicht
Dans ce tuto le le modèle de vue est assez simple, j'aurai aimé avoir quelques précisons sur un cas un peu plus complexe (mais qui doit être assez courant ) :
Dans mon cas j'utilise hibernate et spring
Dans le tuto de Baptiste Wicht, la vue permet de modifier un champs déclaré dans la classe du modèle.
Dans mon cas j'ai un modèle de vue qui contient (et qui observe) une instance de l'objet métier suivant
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
|
@Entity
@Table(name = "FAXMODEL")
public class FaxModel extends PersistantObject implements IFaxModel {
private String lastNameTransmitter;
@Column(name = "LASTNAME_TRANSMIT")
public String getLastNameTransmitter() {
return lastNameTransmitter;
}
public void setLastNameTransmitter(String lastNameTransmitter) {
this.lastNameTransmitter = lastNameTransmitter;
}
} |
Dans ma vue je dois créer un champs qui permet de saisir la valeur du champs lastNameTransmitter de mon objet métier FaxModel
Ma vue ne modifie donc pas directement un champs du modèle de vue. Elle modifie un champ (lastNameTransmitter) d'un champ (FaxModel ) du modèle de vue.
Mon problème est de savoir quelle méthode utiliser pour que le modèle de vue soit notifier par mon objet métier
D'après ce que j'ai lu (et surtout ce que j'ai compris ...) c'est à l'objet observé de "décider" s'il veut ou non notifier ses observers
Dans mon cas , si j'ai bien compris , cela serait donc à mon objet métier FaxModel de "décider" s'il veut ou non notifier mon modèle de vue, puis que mon modèle de vue "décide" s'il veut ou non notifier ses observers
Les setter de mes objets métier devront donc contenir un appel à une méthode de notifications, mon modèle de vue (observant l'objet métier), sera alors notifié que son champs FaxModel a été modifié. Il pourra alors décider s'il veut ou non ses observers
Mais cette méthode est elle "compatible" avec hibernate ? cela ne va t il pas poser problème lorsque ce dernier va valoriser ces champs ?
De même si spring "injecte" des valeurs dans mon objet métier ne vais je pas avoir des problèmes ?
Dans ces deux cas j'ai peur qu'une grande quantité d'évènement soit générés
Si quelqu'un peut m'enlever ses doutes (ou souligner les points que j'ai mal compris ...) cela serait très sympas
Dans touts les cas merci d'avoir lu mon post jusqu'au bout ;)