RobotFactory.java 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. package test;
  2. import test.Robot.GreetRobot;
  3. import test.Robot.ManufactureRobot;
  4. import test.Robot.MathOperation;
  5. public class RobotFactory {
  6. public static Robot<MathOperation> buildMathRobot() {
  7. return new Robot<MathOperation>() {
  8. public void performTask(MathOperation listener) {
  9. System.out.println("Robot.performTask() called!");
  10. int result = listener.operate(3, 4);
  11. System.out.println("Result: " + result);
  12. }
  13. public void performTask(MathOperation listener, CleanupTask cleanupTask) {
  14. System.out.println("Robot.performTask() called!");
  15. int result = listener.operate(3, 4);
  16. System.out.println("Result: " + result);
  17. cleanupTask.cleanup();
  18. }
  19. };
  20. }
  21. public static Robot<GreetRobot> buildGreetRobot(Robot target) {
  22. return new Robot<GreetRobot>() {
  23. public void performTask(GreetRobot listener) {
  24. System.out.println("Robot.performTask() called!");
  25. listener.greet(target);
  26. }
  27. public void performTask(GreetRobot listener, CleanupTask cleanupTask) {
  28. System.out.println("Robot.performTask() called!");
  29. listener.greet(target);
  30. cleanupTask.cleanup();
  31. }
  32. };
  33. }
  34. public static Robot<ManufactureRobot<Robot<GreetRobot>>> buildManufactureRobot() {
  35. return new Robot<ManufactureRobot<Robot<GreetRobot>>>() {
  36. public void performTask(ManufactureRobot<Robot<GreetRobot>> listener) {
  37. System.out.println("Robot.performTask() called!");
  38. Robot<GreetRobot> output = listener.manufacture("Greet");
  39. System.out.println("Output: " + output.toString());
  40. }
  41. public void performTask(ManufactureRobot<Robot<GreetRobot>> listener, CleanupTask cleanupTask) {
  42. System.out.println("Robot.performTask() called!");
  43. Robot<GreetRobot> output = listener.manufacture("Greet");
  44. System.out.println("Output: " + output.toString());
  45. cleanupTask.cleanup();
  46. }
  47. };
  48. }
  49. }