Hi,
ich habe folgende Klassen zu verschönern.
Ich habe einfach alles in eine abstrakte Superklasse gezogen, dabei sind
und
abstrakt und müssen in den Unterklassen implementiert werden. Damit sind alle Codeverdoppelungen aus der Welt, der Code sieht für mich gut aus und ich bin zufrieden. Ich kann kein Muster erkennen, am ehesten noch Fassade. Was meint ihr zur Lösung und zum "erkannten" Muster?
Gruß
Michi
ich habe folgende Klassen zu verschönern.
Java:
public class Kartoffeln {
void zubereiten() {
/* Der Rumpf der Methode zubereiten() darf nicht verändert werden! */
setzeWasserAuf();
kochen();
abseihen();
ladeAufTeller();
}
void ladeAufTeller() {
System.out.println("Essen auf den Teller geladen.");
}
void abseihen() {
System.out.println("Kartoffeln nun im Sieb.");
}
void kochen() {
System.out.println("Kartoffeln kochen jetzt.");
}
void setzeWasserAuf() {
System.out.println("Wasser aufgesetzt und nun kochend.");
}
}
Java:
public class Main {
/**
* @param args Kommandozeilenargumente
*
* In den drei Klassen stimmt die Methode zubereiten() zwar überein,
* aber die darin aufgerufenen Methoden unterscheiden sich in dem,
* was sie ausführen - das könnte man bestimmt schöner und mit weniger
* Quelltextverdopplung lösen ...
*
* (Die Methode main() darf nicht angefasst werden!)
*/
public static void main(String[] args) {
Kartoffeln meineKartoffeln = new Kartoffeln();
meineKartoffeln.zubereiten();
Nudeln meineNudeln = new Nudeln();
meineNudeln.zubereiten();
Reis meinReis = new Reis();
meinReis.zubereiten();
}
}
Java:
public class Nudeln {
void zubereiten() {
/* Der Rumpf der Methode zubereiten() darf nicht verändert werden! */
setzeWasserAuf();
kochen();
abseihen();
ladeAufTeller();
}
void ladeAufTeller() {
System.out.println("Essen auf den Teller geladen.");
}
void abseihen() {
System.out.println("Nudeln nun im Sieb.");
}
void kochen() {
System.out.println("Nudeln kochen jetzt.");
}
void setzeWasserAuf() {
System.out.println("Wasser aufgesetzt und nun kochend.");
}
}
Java:
public class Reis {
void zubereiten() {
/* Der Rumpf der Methode zubereiten() darf nicht verändert werden! */
setzeWasserAuf();
kochen();
abseihen();
ladeAufTeller();
}
void ladeAufTeller() {
System.out.println("Essen auf den Teller geladen.");
}
void abseihen() {
System.out.println("Reis nun im Sieb.");
}
void kochen() {
System.out.println("Reis kocht jetzt.");
}
void setzeWasserAuf() {
System.out.println("Wasser aufgesetzt und nun kochend.");
}
}
Ich habe einfach alles in eine abstrakte Superklasse gezogen, dabei sind
Code:
abseihen()
Code:
kochen()
Gruß
Michi