fork download
  1. import java.util.ArrayList;
  2. import java.util.Iterator;
  3. import java.util.List;
  4.  
  5. class Odziez {
  6. private String nazwa;
  7.  
  8. public Odziez(String nazwa) { this.nazwa = nazwa; }
  9.  
  10. @Override
  11. public String toString() { return nazwa; }
  12. }
  13.  
  14. interface Program {
  15. void wykonaj(Odziez odziez);
  16. String programName();
  17. }
  18.  
  19. class Pralka {
  20. private List<Program> programs = new ArrayList<Program>();
  21.  
  22. public void add(Program program) { programs.add(program); }
  23.  
  24. public void remove(String programName) {
  25. Iterator<Program> iter = programs.iterator();
  26. while(iter.hasNext()) {
  27. if (iter.next().programName().equalsIgnoreCase(programName))
  28. iter.remove();
  29. }
  30. }
  31.  
  32. public void start(Odziez odziez) {
  33. for (Program p : programs)
  34. p.wykonaj(odziez);
  35. }
  36. }
  37.  
  38. class Wirowanie implements Program {
  39. @Override
  40. public void wykonaj(Odziez odziez) {
  41. System.out.println("Wirowanie: " + odziez);
  42. }
  43.  
  44. @Override
  45. public String programName() {
  46. return "WIROWANIE";
  47. }
  48. }
  49.  
  50. class Suszenie implements Program {
  51. @Override
  52. public void wykonaj(Odziez odziez) {
  53. System.out.println("Susze: " + odziez);
  54. }
  55.  
  56. @Override
  57. public String programName() {
  58. return "SUSZENIE";
  59. }
  60. }
  61.  
  62. public class Main {
  63. public static void main(String[] args) {
  64. Pralka pralka = new Pralka();
  65. pralka.add(new Wirowanie());
  66. pralka.add(new Suszenie());
  67. pralka.start(new Odziez("Koszulka"));
  68. pralka.remove("SUSZENIE");
  69. pralka.start(new Odziez("Sweter"));
  70. }
  71. }
Success #stdin #stdout 0.07s 381184KB
stdin
Standard input is empty
stdout
Wirowanie: Koszulka
Susze: Koszulka
Wirowanie: Sweter