fork download
  1. /* package whatever; // don't place package name! */
  2.  
  3. import java.util.*;
  4. import java.lang.*;
  5. import java.io.*;
  6.  
  7. /* Name of the class has to be "Main" only if the class is public. */
  8. class Ideone
  9. {
  10. interface Task {
  11. void doSomething();
  12. }
  13.  
  14. interface Factory {
  15. Task makeTask(String taskDescription);
  16. }
  17.  
  18. static Map<String, Factory> taskMap = new HashMap<>();
  19.  
  20. static {
  21. taskMap.put("sayHello", new Factory() {
  22. @Override
  23. public Task makeTask(String taskPayload) {
  24. return new Task() {
  25. @Override
  26. public void doSomething() {
  27. System.out.println("Hello " + taskPayload);
  28. }
  29. };
  30. }
  31. });
  32. }
  33.  
  34. static void onTask(String taskName, String taskPayload) {
  35. Factory factory = taskMap.get(taskName);
  36. if (factory == null) {
  37. System.out.println("Unknown task: " + taskName);
  38. return;
  39. }
  40. Task task = factory.makeTask(taskPayload);
  41.  
  42. // execute task somewhere
  43. task.doSomething();
  44. }
  45.  
  46. public static void main(String[] args) {
  47. onTask("sayHello", "qingl97");
  48. onTask("sayGoodbye", "qingl97");
  49. }
  50. }
Success #stdin #stdout 0.1s 320576KB
stdin
Standard input is empty
stdout
Hello qingl97
Unknown task: sayGoodbye