Hallo zusammen,
eine schwierig zu stellende Frage, hoffentlich bekomm ich es trotzdem verständlich hin:
Ich habe eine Superklasse "Tabelle", die dafür zuständig ist, eine Tabelle zu zeichnen, die einige Stückchen spielen kann (Auf- und Zuklappen von Teilen, dann Aufsummieren von Daten in den zugeklappten Reihen, blablabla.
Ich habe es beim ersten Mal so gelöst, dass die Superklasse eigentlich so ziemlich alles kann, also alle Methoden enthält und die Unterklassen sehr, sehr schlank sind. Dadurch hat sich langsam ergeben, dass die Methoden unendlich lange sind und viele if()-Abfragen beinhalten (WENN du eine XY-Tabelle bist, dann mach das, ansonsten das andere). Dadurch wird alles ziemlich unübersichtlich, das Erweitern und Hinzufügen von Funktionalität ist relativ schwierig.
Dann wollte ich die Methoden in die jeweiligen Unterklassen auslagern, also jeweils das, was für die speziellen Tabellen notwendig ist. Das ergibt aber viel doppeltes, da Methoden zum Beispiel folgendermaßen aussehen:
methode xy() {
// zeugs für alle tabellen
// zeugs für alle tabellen
// zeug nur für tabelle a
// zeug für alle tabellen
// zeug nur für tabellen b + c
// zeug für alle tabellen
// zeug nur für tabelle b
...
}
Gibt es da ein Pattern? Mir fällt immer das Strategie-Muster ein, aber das will irgendwie nicht so recht hinhauen... Andere Einfälle? Ich wär wirklich froh um ein paar Denkansätze, da ich mir langsam echt schwer tu...
Danke und schöne Grüße!
eine schwierig zu stellende Frage, hoffentlich bekomm ich es trotzdem verständlich hin:
Ich habe eine Superklasse "Tabelle", die dafür zuständig ist, eine Tabelle zu zeichnen, die einige Stückchen spielen kann (Auf- und Zuklappen von Teilen, dann Aufsummieren von Daten in den zugeklappten Reihen, blablabla.
Ich habe es beim ersten Mal so gelöst, dass die Superklasse eigentlich so ziemlich alles kann, also alle Methoden enthält und die Unterklassen sehr, sehr schlank sind. Dadurch hat sich langsam ergeben, dass die Methoden unendlich lange sind und viele if()-Abfragen beinhalten (WENN du eine XY-Tabelle bist, dann mach das, ansonsten das andere). Dadurch wird alles ziemlich unübersichtlich, das Erweitern und Hinzufügen von Funktionalität ist relativ schwierig.
Dann wollte ich die Methoden in die jeweiligen Unterklassen auslagern, also jeweils das, was für die speziellen Tabellen notwendig ist. Das ergibt aber viel doppeltes, da Methoden zum Beispiel folgendermaßen aussehen:
methode xy() {
// zeugs für alle tabellen
// zeugs für alle tabellen
// zeug nur für tabelle a
// zeug für alle tabellen
// zeug nur für tabellen b + c
// zeug für alle tabellen
// zeug nur für tabelle b
...
}
Gibt es da ein Pattern? Mir fällt immer das Strategie-Muster ein, aber das will irgendwie nicht so recht hinhauen... Andere Einfälle? Ich wär wirklich froh um ein paar Denkansätze, da ich mir langsam echt schwer tu...
Danke und schöne Grüße!