Ich kann mich im Moment nicht so recht entscheiden, wie ich denn folgenden Sachverhalt modellieren soll. Würde mich daher mal interessieren, wie ihr an so etwas heran geht.
Ein Mitarbeiter kann einen Antrag via Formular tätigen, z.B. Antrag auf weitere Rollen. Dabei gibt es drei verschiedene Antragstypen:
neu,
ändern und
Nutzer löschen. Wenn es sich um ein
neu- oder
ändern-Formular handelt, so muss der Mitarbeiter Rollen angeben. Zudem gibt es noch eine Zusatzoption, die weitere Pflichtfelder einblendet, aber eben nur, wenn diese Zusatzoption gewählt wurde.
Nun will ich einen solchen Antrag in Klassen gießen und bin bisher zu folgendem Ergebnis gekommen:
Delphi-Quellcode:
Request = class abstract
DeleteRequest = class(Request)
RequestEx = class abstract(Request)
RequestNew = class(RequestEx)
RequestNewEx = class(RequestNew)
RequestEdit = class(RequestEx)
RequestEditEx = class(RequestEdit)
(Die Einrückung symbolisiert die Ableitung)
Jedenfalls habe ich das "persönliche Problem", dass die Klasse
DeleteRequet komplett leer ist, da ich (bisher) noch keinerlei Zusatzfunktionalität benötige und auch nicht weiß, ob ich diese überhaupt noch brauche. Zudem entstehen somit sehr viele Klassen, da da beschriebene Beispiel
imho noch sehr klein ist. Daher kam auch sehr schnell die Idee alle Klassen in eine einzige zu mergen, wobei ich eben dann eine Typ-Property einbauen muss und manche Properties für gewisse Fälle "tot" und unbenutzt sind. Wie handhabt ihr sowas? Lieber wenige, dafür angereicherte Klassen, oder eher mehrere einzelne, wie im obigen Beispiel gezeigt?
PS: Das hier soll nicht in einem Glaubenskrieg ausbrechen!
Mir ist definitiv bewusst, dass man immer einen Mittelweg gehen wird.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)