Hallo zusammen,
ich habe - bevor ich mich bei meinem aktuellen Programm in eine Sackgasse bewege - eine Frage. In meinem Programm (soll ein Dienstplan für meine Abteilung werden) gibt es 3 Diensttypen, nennen wir sie mal Dienst 1 - 3. Diese greifen jeweils auf eine
DB-Tabelle zu (ist Firebird aber in dem Zusammenhang irrelevant). Die Dienste bzw. die Datenbankabfragen der Dienste unterscheiden sich lediglich in den Namen der Datenbankfelder. Wie implementiere ich dies am sinnvollsten? Momentan sieht es im übrigen NICHT so aus, als würde sich die Anzahl der Dienste (also Dienst 4,5,6 etc.) irgendwann vergrößern, eine Garantie habe ich aber dafür nicht. Meine 2 Ideen:
1.) Eine Klasse, im Konstruktor wird die Dienstart (z.B. als Integer) übergeben. Die Datenbankabfragen (genauer die Feldnamen) werden dann ja nach Integer-Wert in den entsprechenden Routinen z.B. mittels "CASE DienstArt OF [...]" verändert.
2.) Eine abstrakte Klasse, wobei ich für die verschiedenen DienstArten jeweils eine eigene KLasse davon ableite und die Datenbankabfragen hier jeweils getrennt implementiere.
Für 1. spricht meiner Meinung die einfachere Implementierung. Sollte sich irgendwann einmal die Abfrage(n) ändern, müsste ich nur diese eine Klasse verändern, bei 2. wären die (wie beschrieben) sehr ähnlichen Abfragen - da abstrakt deklariert - alle zu ändern.
Für 2. spricht für mich eigentlich nur die Einhaltung des
OOP-Prinzips, die Pflege scheint mir hier deutlich aufwendiger
Ich hoffe, Ihr könnt meinem Gedankengang folgen bzw. vielleicht habt ihr ja noch eine viel einfachere Idee.
Grüsse,
Michael