From 5d9882c650636ecce36acdd99e7a108b0d536057 Mon Sep 17 00:00:00 2001 From: Peter Hertkorn <peter.hertkorn@reutlingen-university.de> Date: Sun, 11 Oct 2020 21:38:26 +0200 Subject: [PATCH] Add configurable factory for predators --- .../predators/PredatorFactory.java | 20 ++++++++++++++----- .../predators/predator.properties | 2 ++ 2 files changed, 17 insertions(+), 5 deletions(-) create mode 100644 src/aliensimulator/predators/predator.properties diff --git a/src/aliensimulator/predators/PredatorFactory.java b/src/aliensimulator/predators/PredatorFactory.java index 14ad9e3..6629222 100644 --- a/src/aliensimulator/predators/PredatorFactory.java +++ b/src/aliensimulator/predators/PredatorFactory.java @@ -1,13 +1,23 @@ package aliensimulator.predators; +import java.io.IOException; +import java.util.Properties; + public class PredatorFactory { public Predator createPredator(String type) { - if (type.equals("yautja")) { - return new Yautja(); - } else if (type.equals("hishquten")) { - return new HishQuTen(); - } else return null; + Predator predator = null; + Properties properties = new Properties(); + + try { + properties.load(this.getClass().getResourceAsStream("predator.properties")); + String className = properties.getProperty(type); + Class<?> classOfPredator = Class.forName(className); + predator = (Predator) classOfPredator.newInstance(); + } catch (IOException | ClassNotFoundException | InstantiationException | IllegalAccessException e) { + e.printStackTrace(); + } + return predator; } } diff --git a/src/aliensimulator/predators/predator.properties b/src/aliensimulator/predators/predator.properties new file mode 100644 index 0000000..a1f5396 --- /dev/null +++ b/src/aliensimulator/predators/predator.properties @@ -0,0 +1,2 @@ +yautja=aliensimulator.predators.Yautja +hishquten=aliensimulator.predators.HishQuTen -- GitLab