Hallo,
ich arbeite zur Zeit an einem kleinen Projekt, habe jetzt etwa 20 Klassen und mir stellen sich einige Fragen zum Design der Klassen. Gelöst kriege ich meine Probleme zwar, aber ich frage mich immer, ob diese Lösungen richtig oder schön sind, oder ob es in der Praxis anders gemacht wird.
Ich habe 2 Klassen mit einem Sonderstatus, nämlich Programm und Settings.
Settings habe ich als Singleton implementiert, da ja nur eine Instanz gebraucht wird. Ich frage mich jetzt, wie der Zugriff auf die Settings erfolgen sollte. Hier einige Vorschläge:
Letzere Möglichkeit erscheint mir noch am logischsten, wobei ich gerne mal hören würde, wie soetwas allgemein gelöst wird. Ich hoffe es war verständlich und jemand weiß mir zu helfen.
Gruß
Leif
ich arbeite zur Zeit an einem kleinen Projekt, habe jetzt etwa 20 Klassen und mir stellen sich einige Fragen zum Design der Klassen. Gelöst kriege ich meine Probleme zwar, aber ich frage mich immer, ob diese Lösungen richtig oder schön sind, oder ob es in der Praxis anders gemacht wird.
Ich habe 2 Klassen mit einem Sonderstatus, nämlich Programm und Settings.
-
Code:
Programm
-
Code:
Settings
Settings habe ich als Singleton implementiert, da ja nur eine Instanz gebraucht wird. Ich frage mich jetzt, wie der Zugriff auf die Settings erfolgen sollte. Hier einige Vorschläge:
- Der User könnte auf die Setting-Instanz direkt zugreifen. Doch wie erfährt dann das Programm davon, dass die Settings geändert wurden? Die Klasse Settings sollte eigentlich gar nicht wissen, dass es die Klasse Programm gibt.
- Das Programm könnte für jede Einstellung in den Settings eigene Getter- und Setter-Methoden bereitstellen, und Zugriffe auf die Settings laufen nur hierüber? Das wären sehr viele Methoden, die meinem Gefühl nach nicht in die Klasse Programm gehören.
- Der User könnte über das Programm eine Kopie des Setting-Objekts bekommen und daran dann Änderungen vornehmen. Das geänderte Objekt gibt er dem Programm zurück und dieses gibt der Klasse Settings das neue Objekt weiter und vermerkt, dass die Einstellungen geändert wurden.
Letzere Möglichkeit erscheint mir noch am logischsten, wobei ich gerne mal hören würde, wie soetwas allgemein gelöst wird. Ich hoffe es war verständlich und jemand weiß mir zu helfen.
Gruß
Leif