Advertisement
Guest User

Untitled

a guest
Oct 22nd, 2019
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.13 KB | None | 0 0
  1. import java.util.ArrayList;
  2.  
  3. abstract class Subject {
  4. private ArrayList<Observer>observers;
  5. public Subject() {
  6. observers = new ArrayList<>();
  7. }
  8. public void attach(Observer observer){
  9. observers.add(observer);
  10. }
  11. public void detach(Observer observer){
  12. observers.remove(observer);
  13. }
  14. public void notifyObserver(int state){
  15. for (Observer o: observers){
  16. o.update(state);
  17. }
  18. }
  19. }
  20.  
  21. class ConcreteSubject extends Subject{
  22. private int subjectState;
  23. public int getState(){
  24. return subjectState;
  25. }
  26. public void setState(int newState){
  27. subjectState = newState;
  28. System.out.println("subject' state change to "+newState);
  29. this.notifyObserver(subjectState);
  30. }
  31. }
  32.  
  33. interface Observer {
  34. public void update(int state);
  35. }
  36.  
  37. class ConcreteObserver1 implements Observer {
  38. public void update(int state){
  39. System.out.println("ConcreteObserver1 know state had changed to"+state);
  40. doSomething();
  41. }
  42. private void doSomething() {
  43. System.out.println("ConcreteObserver1 do something!!!");
  44. }
  45. }
  46.  
  47. class ConcreteObserver2 implements Observer {
  48. public void update(int state){
  49. System.out.println("ConcreteObserver2 know state had changed to"+state);
  50. doSomething();
  51. }
  52. private void doSomething() {
  53. System.out.println("ConcreteObserver2 do something!!!");
  54. }
  55. }
  56.  
  57. class ConcreteObserver3 implements Observer {
  58. public void update(int state){
  59. System.out.println("ConcreteObserver3 know state had changed to"+state);
  60. doSomething();
  61. }
  62. private void doSomething() {
  63. System.out.println("ConcreteObserver3 do something!!!");
  64. }
  65. }
  66.  
  67. public class Client {
  68. public static void main(String[] args){
  69. ConcreteSubject subject = new ConcreteSubject();
  70. Observer o1 = new ConcreteObserver1();
  71. Observer o2 = new ConcreteObserver2();
  72. Observer o3 = new ConcreteObserver3();
  73.  
  74. subject.attach(o1);
  75. subject.attach(o2);
  76. subject.attach(o3);
  77.  
  78. subject.setState(11);
  79. subject.detach(o2);
  80.  
  81. subject.setState(12);
  82. }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement