Eine Facade als Factorysystem als Klassennamen erstellt. idVergabe dahin

verschoben. Methode roboterAnlegen in der Facade erstellt.
master
Milan Lukic 2023-01-05 19:44:43 +01:00
parent 28af833e03
commit f276084c7e
3 changed files with 65 additions and 30 deletions

View File

@ -4,23 +4,23 @@ import java.util.HashMap;
public class RobotFactory { public class RobotFactory {
private String name; private String name;
private HashMap <Integer, Roboter> roboters = new HashMap<>(); private HashMap <Integer, Roboter> roboterLager = new HashMap<>();
public RobotFactory (String name) { public RobotFactory (String name) {
this.name = name; this.name = name;
} }
public int addRobot (RobotType robotType, String name) { public int addRobot (RobotType robotType, String name, int id) {
Roboter roboter; Roboter roboter;
if (RobotType.R2D2 == robotType) { if (RobotType.R2D2 == robotType) {
roboter = new R2D2 (name); roboter = new R2D2 (name, id);
roboters.put(roboter.getId(), roboter); roboterLager.put(roboter.getId(), roboter);
return roboter.getId(); return roboter.getId();
} }
else if (RobotType.C3PO == robotType) { else if (RobotType.C3PO == robotType) {
roboter = new C3PO (name); roboter = new C3PO (name,id);
roboters.put(roboter.getId(), roboter); roboterLager.put(roboter.getId(), roboter);
return roboter.getId(); return roboter.getId();
} }
@ -33,6 +33,6 @@ public RobotFactory (String name) {
} }
public Roboter findeRoboter (int id) { public Roboter findeRoboter (int id) {
return roboters.get(id); return roboterLager.get(id);
} }
} }

View File

@ -0,0 +1,45 @@
package facade;
import java.util.HashMap;
import Domäne.C3PO;
import Domäne.R2D2;
import Domäne.RobotFactory;
import Domäne.RobotType;
import Domäne.Roboter;
public class Factorysystem {
private RobotFactory robotFactory;
public HashMap<Integer, Roboter> roboterLager = new HashMap<>();
public Factorysystem (String name) {
this.robotFactory = new RobotFactory (name);
}
public int roboterAnlegen (String name, int auswahl) {
RobotType robottype;
if(auswahl == 1) {
robottype = RobotType.R2D2;
int id = idVergeben(0, 9999);
robotFactory.addRobot(robottype, name, id);
return id;
} else if(auswahl == 2) {
robottype = RobotType.C3PO;
int id = idVergeben(10000, 19999);
robotFactory.addRobot(robottype, name, id);
return id;
}
roboterLager.put(id, r);
}
private int idVergeben(int min, int max) {
int randomValue = (int) (Math.random()*(max - min)) + min;
if (roboterLager.containsKey(randomValue)) {
idVergeben(min, max);
}
return randomValue;
}
}

View File

@ -4,15 +4,17 @@ import java.util.Scanner;
import Domäne.C3PO; import Domäne.C3PO;
import Domäne.R2D2; import Domäne.R2D2;
import Domäne.Roboter; import facade.Factorysystem;
import java.util.HashMap;
public class Factory { public class Factory {
Scanner sc = new Scanner(System.in); Scanner sc = new Scanner(System.in);
public HashMap<Integer, Roboter> roboterLager = new HashMap<>(); private Factorysystem factorysystem;
public Factory() {
public Factory(Factorysystem factorysystem) {
this.factorysystem = factorysystem;
hauptmenü(); hauptmenü();
} }
@ -55,34 +57,22 @@ public class Factory {
} }
private void roboterBauen() { private void roboterBauen() {
Roboter r = null;
int id = 0;
System.out.println("Welchen Robotertyp möchten Sie haben?(R2D2(1) oder C3PO (2)"); System.out.println("Welchen Robotertyp möchten Sie haben?(R2D2(1) oder C3PO (2)");
int auswahl = Integer.parseInt(sc.nextLine()); int auswahl = Integer.parseInt(sc.nextLine());
System.out.println("Wie wollen Sie ihren Roboter nennen?"); System.out.println("Wie wollen Sie ihren Roboter nennen?");
String name = sc.nextLine(); String name = sc.nextLine();
if(auswahl == 1) { int seriennummer = factorysystem.roboterAnlegen(name, auswahl);
id = idVergeben(0, 9999); System.out.println(name + " mit der Seriennummer: " + seriennummer + " wurde erstellt.");
r = new R2D2(name, id);
} else if(auswahl == 2) {
id = idVergeben(10000, 19999);
r = new C3PO(name, id);
}
roboterLager.put(id, r);
} }
private int idVergeben(int min, int max) {
int randomValue = (int) (Math.random()*(max - min)) + min;
if (roboterLager.containsKey(randomValue)) {
idVergeben(min, max);
}
return randomValue;
}
} }