Created
October 19, 2012 23:04
-
-
Save gphan/3921204 to your computer and use it in GitHub Desktop.
Over engineered "enterprisey" solution to the Fizz Buzz problem
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.util.List; | |
import java.util.ArrayList; | |
interface NumberTest { | |
boolean testNumber(int number); | |
String numberTestString(int number); | |
} | |
class FizzTest implements NumberTest { | |
public boolean testNumber(int number) { | |
return number % 3 == 0; | |
} | |
public String numberTestString(int number) { | |
return "Fizz"; | |
} | |
} | |
class BuzzTest implements NumberTest { | |
public boolean testNumber(int number) { | |
return number % 5 == 0; | |
} | |
public String numberTestString(int number) { | |
return "Buzz"; | |
} | |
} | |
class FizzBuzzTest implements NumberTest { | |
public boolean testNumber(int number) { | |
return number % 15 == 0; | |
} | |
public String numberTestString(int number) { | |
return "FizzBuzz"; | |
} | |
} | |
interface NumberTester { | |
void addNumberTest(NumberTest test); | |
void testNumbers(int[] numbers); | |
} | |
class LinearNumberTester implements NumberTester { | |
private List<NumberTest> testers = new ArrayList<NumberTest>(); | |
public void addNumberTest(NumberTest test) { | |
this.testers.add(test); | |
} | |
public void testNumbers(int[] numbers) { | |
for (int number : numbers) { | |
boolean usedTest = false; | |
for (NumberTest test : testers) { | |
if (test.testNumber(number)) { | |
usedTest = true; | |
System.out.println(test.numberTestString(number)); | |
break; | |
} | |
} | |
if (!usedTest) { | |
System.out.println(number); | |
} | |
} | |
} | |
} | |
class FizzBuzzTestModule { | |
public static void main(String[] args) { | |
NumberTester tester = new LinearNumberTester(); | |
tester.addNumberTest(new FizzBuzzTest()); | |
tester.addNumberTest(new FizzTest()); | |
tester.addNumberTest(new BuzzTest()); | |
int[] numbers = new int[100]; | |
for (int i = 1; i <= numbers.length; i++) { | |
numbers[i - 1] = i; | |
} | |
tester.testNumbers(numbers); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment