From 4aa0e8219db94a034c95b6db5ba21f847e3fecdc Mon Sep 17 00:00:00 2001 From: michellexchen Date: Thu, 3 Mar 2016 16:34:59 -0500 Subject: [PATCH] created factory class using reflection and reading property file --- .classpath | 6 +++++ src/Resources/Bets.properties | 3 +++ src/roulette/Bet.java | 8 +++--- src/roulette/Factory.java | 39 ++++++++++++++++++++++++++++++ src/roulette/Game.java | 6 ++--- src/roulette/OddEven.java | 13 ++++++++++ src/roulette/RedBlack.java | 14 +++++++++++ src/roulette/ThreeConsecutive.java | 13 ++++++++++ 8 files changed, 95 insertions(+), 7 deletions(-) create mode 100644 .classpath create mode 100644 src/Resources/Bets.properties create mode 100644 src/roulette/Factory.java create mode 100644 src/roulette/OddEven.java create mode 100644 src/roulette/RedBlack.java create mode 100644 src/roulette/ThreeConsecutive.java diff --git a/.classpath b/.classpath new file mode 100644 index 0000000..fb50116 --- /dev/null +++ b/.classpath @@ -0,0 +1,6 @@ + + + + + + diff --git a/src/Resources/Bets.properties b/src/Resources/Bets.properties new file mode 100644 index 0000000..ef0e4a3 --- /dev/null +++ b/src/Resources/Bets.properties @@ -0,0 +1,3 @@ +OddEven=.56, odd and even bet +RedBlack= .76, red and black bet +ThreeConsecutive= .88, three consecutive bet \ No newline at end of file diff --git a/src/roulette/Bet.java b/src/roulette/Bet.java index 66888a3..fae1380 100755 --- a/src/roulette/Bet.java +++ b/src/roulette/Bet.java @@ -8,15 +8,15 @@ */ public class Bet { private String myDescription; - private int myOdds; + private double myOdds; /** * Constructs a bet with the given name and odds. * - * @param description name of this kind of bet + * @param name of this kind of bet * @param odds odds given by the house for this kind of bet */ - public Bet (String description, int odds) { + public Bet (double odds, String description) { myDescription = description; myOdds = odds; } @@ -24,7 +24,7 @@ public Bet (String description, int odds) { /** * @return odds given by the house for this kind of bet */ - public int getOdds () { + public double getOdds () { return myOdds; } diff --git a/src/roulette/Factory.java b/src/roulette/Factory.java new file mode 100644 index 0000000..e048047 --- /dev/null +++ b/src/roulette/Factory.java @@ -0,0 +1,39 @@ +package roulette; + +import java.lang.reflect.InvocationTargetException; +import java.util.ArrayList; +import java.util.List; +import java.util.ResourceBundle; + +public class Factory { + + private String[] classnames = {"OddEven","RedBlack", "ThreeConsecutive"}; + private static ResourceBundle myResources = ResourceBundle.getBundle("Resources/Bets"); + + public static Bet createBet(String classname){ + String[] betArguments = myResources.getString(classname).split(", "); + double odds = Double.parseDouble(betArguments[0]); + String descriptor = betArguments[1]; + Bet bet = null; + switch (classname){ + case "OddEven": + bet = new OddEven(odds, descriptor); + break; + case "RedBlack": + bet = new RedBlack(odds, descriptor); + break; + case "ThreeConsecutive": + bet = new ThreeConsecutive(odds, descriptor); + break; + default: + return null; + } + return bet; + } + + public static Bet createBetwithReflection(String classname) throws ClassNotFoundException, InstantiationException, IllegalAccessException, IllegalArgumentException, InvocationTargetException, NoSuchMethodException, SecurityException { + Class clazz = Class.forName((classname)); + Bet bet = (Bet) clazz.getConstructor().newInstance(); + return bet; + } +} diff --git a/src/roulette/Game.java b/src/roulette/Game.java index 0e60ba9..d46b8d7 100755 --- a/src/roulette/Game.java +++ b/src/roulette/Game.java @@ -13,9 +13,9 @@ public class Game { private static final String DEFAULT_NAME = "Roulette"; // bets player can make private Bet[] myPossibleBets = { - new Bet("Red or Black", 1), - new Bet("Odd or Even", 1), - new Bet("Three in a Row", 11) + new Bet(1, "Red or Black"), + new Bet(1, "Odd or Even"), + new Bet(11, "Three in a Row") }; private Wheel myWheel; diff --git a/src/roulette/OddEven.java b/src/roulette/OddEven.java new file mode 100644 index 0000000..0f42952 --- /dev/null +++ b/src/roulette/OddEven.java @@ -0,0 +1,13 @@ +package roulette; + +public class OddEven extends Bet{ + + public OddEven() { + // TODO Auto-generated constructor stub + super(0, "Hi"); + } + + public OddEven(double odds, String description){ + super(odds, description); + } +} diff --git a/src/roulette/RedBlack.java b/src/roulette/RedBlack.java new file mode 100644 index 0000000..693f912 --- /dev/null +++ b/src/roulette/RedBlack.java @@ -0,0 +1,14 @@ +package roulette; + +public class RedBlack extends Bet{ + + public RedBlack() { + // TODO Auto-generated constructor stub + super(0, "Hi"); + } + + public RedBlack(double odds, String description){ + super(odds, description); + } + +} diff --git a/src/roulette/ThreeConsecutive.java b/src/roulette/ThreeConsecutive.java new file mode 100644 index 0000000..07c7969 --- /dev/null +++ b/src/roulette/ThreeConsecutive.java @@ -0,0 +1,13 @@ +package roulette; + +public class ThreeConsecutive extends Bet{ + + public ThreeConsecutive() { + // TODO Auto-generated constructor stub + super(0, "Hi"); + } + + public ThreeConsecutive(double odds, String description){ + super(odds, description); + } +}