Hallo,
ich habe einige Klassen, in denen ich PropertyChangeListener verwenden will. Jetzt frage ich mich, ob man das besser mit Vererbung oder Komposition realisiert?
Nachteil bei der Vererbung wäre ja, dass diese Klassen dann von nirgendwo anders mehr erben könnten.
Außerdem soll eine Vererbung ja immer eine "is-a" Beziehung sein. Und ein Auto ist ja kein PropertyChangeSupport. Da würde man die Vererbung ja in gewisser Weise missbrauchen, oder?
Beispiel:
ich habe einige Klassen, in denen ich PropertyChangeListener verwenden will. Jetzt frage ich mich, ob man das besser mit Vererbung oder Komposition realisiert?
Nachteil bei der Vererbung wäre ja, dass diese Klassen dann von nirgendwo anders mehr erben könnten.
Außerdem soll eine Vererbung ja immer eine "is-a" Beziehung sein. Und ein Auto ist ja kein PropertyChangeSupport. Da würde man die Vererbung ja in gewisser Weise missbrauchen, oder?
Beispiel:
Java:
public class BaseListener {
protected PropertyChangeSupport propertyChangeSupport = new PropertyChangeSupport(this);
public void addPropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.addPropertyChangeListener(listener);
}
public void removePropertyChangeListener(PropertyChangeListener listener) {
propertyChangeSupport.removePropertyChangeListener(listener);
}
}
//inheritance
public class Auto extends BaseListener {
public void setData(String data) {
String oldData = this.data;
this.data = data;
propertyChangeSupport.firePropertyChange("data", oldData, data);
}
}
//composition
public class Auto {
public void setData(String data) {
String oldData = this.data;
this.data = data;
new BaseListener().propertyChangeSupport.firePropertyChange("data", oldData, data);
}
}
Zuletzt bearbeitet: