Hallo Leut!
Vorneweg: Ich bin 59Jahre alt und wünschte mir ein paar Vorschläge ihrerseits. (also keine Hausaufgaben, nur reinstes Hobby)
Folgender Code ist vorgeschlagen vom Copilot, nach der Aufforderung von mir (eine Consolen-Menu Führung), meinen Code in irgendein Entwurfsmuster einzubetten.
Das Resultat, das Command Pattern.
Ich kann den Code nachvollziehen. Abgesehen davon, dass das mit Kanonen auf Spatzen schießen ist, für mein kleines Programm.
Also bitte, bitte!
Gerne auch abstract...
Vorneweg: Ich bin 59Jahre alt und wünschte mir ein paar Vorschläge ihrerseits. (also keine Hausaufgaben, nur reinstes Hobby)
Folgender Code ist vorgeschlagen vom Copilot, nach der Aufforderung von mir (eine Consolen-Menu Führung), meinen Code in irgendein Entwurfsmuster einzubetten.
Das Resultat, das Command Pattern.
Ich kann den Code nachvollziehen. Abgesehen davon, dass das mit Kanonen auf Spatzen schießen ist, für mein kleines Programm.
Also bitte, bitte!
Gerne auch abstract...
Java:
import java.util.Scanner;
import java.util.HashMap;
import java.util.Map;
// Hauptklasse, die das Menü steuert
public class MainMenu {
private Scanner scanner = new Scanner(System.in);
private Map<Integer, Command> commands = new HashMap<>();
public MainMenu() {
commands.put(1, new SubMenu1Command());
commands.put(2, new SubMenu2Command());
commands.put(3, new SubMenu3Command());
commands.put(4, new ExitCommand());
}
public void display() {
int mainChoice;
do {
System.out.println("Hauptmenü:");
System.out.println("1. Hauptoption 1");
System.out.println("2. Hauptoption 2");
System.out.println("3. Hauptoption 3");
System.out.println("4. Beenden");
System.out.print("Wähle eine Option: ");
mainChoice = scanner.nextInt();
Command command = commands.get(mainChoice);
if (command != null) {
command.execute();
} else {
System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
}
} while (mainChoice != 4);
scanner.close();
}
public static void main(String[] args) {
new MainMenu().display();
}
}
// Command-Interface
interface Command {
void execute();
}
// Klasse für Untermenü 1
class SubMenu1Command implements Command {
private Scanner scanner = new Scanner(System.in);
@Override
public void execute() {
int subChoice;
do {
System.out.println("Untermenü 1:");
System.out.println("1. Unteroption 1.1");
System.out.println("2. Unteroption 1.2");
System.out.println("3. Zurück zum Hauptmenü");
System.out.print("Wähle eine Option: ");
subChoice = scanner.nextInt();
switch (subChoice) {
case 1:
System.out.println("Unteroption 1.1 ausgewählt");
break;
case 2:
System.out.println("Unteroption 1.2 ausgewählt");
break;
case 3:
System.out.println("Zurück zum Hauptmenü");
break;
default:
System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
}
} while (subChoice != 3);
}
}
// Klasse für Untermenü 2
class SubMenu2Command implements Command {
private Scanner scanner = new Scanner(System.in);
@Override
public void execute() {
int subChoice;
do {
System.out.println("Untermenü 2:");
System.out.println("1. Unteroption 2.1");
System.out.println("2. Unteroption 2.2");
System.out.println("3. Zurück zum Hauptmenü");
System.out.print("Wähle eine Option: ");
subChoice = scanner.nextInt();
switch (subChoice) {
case 1:
System.out.println("Unteroption 2.1 ausgewählt");
break;
case 2:
System.out.println("Unteroption 2.2 ausgewählt");
break;
case 3:
System.out.println("Zurück zum Hauptmenü");
break;
default:
System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
}
} while (subChoice != 3);
}
}
// Klasse für Untermenü 3
class SubMenu3Command implements Command {
private Scanner scanner = new Scanner(System.in);
@Override
public void execute() {
int subChoice;
do {
System.out.println("Untermenü 3:");
System.out.println("1. Unteroption 3.1");
System.out.println("2. Unteroption 3.2");
System.out.println("3. Zurück zum Hauptmenü");
System.out.print("Wähle eine Option: ");
subChoice = scanner.nextInt();
switch (subChoice) {
case 1:
System.out.println("Unteroption 3.1 ausgewählt");
break;
case 2:
System.out.println("Unteroption 3.2 ausgewählt");
break;
case 3:
System.out.println("Zurück zum Hauptmenü");
break;
default:
System.out.println("Ungültige Auswahl. Bitte versuche es erneut.");
}
} while (subChoice != 3);
}
}
// Klasse für Beenden
class ExitCommand implements Command {
@Override
public void execute() {
System.out.println("Programm beendet");
}
}