Das heißt aber ich muss auch neben dem "add", mindestens ein "remove" und "clear" erstellen. Und das für jedes ArrayList Element in Demo.
Bisserl aufwendig 🙂
Also wenn Du mehrere Instanzvariablen hast, dann brauchst du mehrere von diesen "Settern/Gettern". Das ist richtig.
Welche Du aber genau brauchst hängt immer von der Logik ab. So remove und clear benötigt werden, dann ist das natürlich auch notwendig.
Ich könnte ja die Variable "subDemo" auf Public setzen ... dann bräuchte ich gar keine Methoden, aber leider muss ich mit "PropertyChangeSupport" mich informieren lassen, wenn eine Variable geändert wird. Das geht dann ja nimmer, oder?
Technisch ginge das, aber das ist ein schlechtes Design:
Implementierungsdetails sind nicht mehr gekapselt, d.h. Du kannst da nichts mehr ändern ohne auch andere Klassen anpacken zu müssen. So solltest Du Dir auch den Setter, der eine ArrayList bekommt, noch mal überlegen. Da würde ich mindestens auf List wechseln, wenn nicht auf Collection. Oder die einfache varargs Variante ...
Und dann ist es aus meiner Sicht üblich, dass man so eine Collection nicht einfach übernimmt. Statt dessen wird die ArrayList geleert oder eine neue erzeugt und dann werden alle Elemente der übergebenen Liste einmal eingefügt.
Ebenso der Getter. Der sollte dann mindestens nur eine List<...> zurück geben.
=> Du kannst dann jederzeit die Klasse ändern und statt einer ArrayList irgend was anderes verwenden. Die ArrayList sollte nach außen nie auftreten.
Ebenso sollte man sich immer überlegen, was man an Methoden braucht. Für vieles gibt es keine Getter und Setter. Du kannst ein Auto beladen und dazu dann halt den Gegenstand und Ort angeben. Also z.B. sowas wie
auto.belade(sonnenbrille, HANDSCHUHFACH) aber du machst nie ein
handschuhfach = new Handschuhfach(); handschuhfach.insert(Sonnenbrille); auto.setHandschuhfach(handschuhfach);, denn Handschuhfach ist ja ein Implementierungsdetail vom Auto. Das kennst Du nicht. Das ist ein Implementierungsdetail, das der Hersteller kapselt.
Daher aufpassen, was Du wo implementierst. Ein addModule das so über mehrere Klassen geht ist möglich und kann durchaus Sinn machen. Aber es "riecht" und ich würde kritisch auf das Design schauen. (Aber sehr gut möglich, dass es bei Dir eben genau so benötigt wird.)