观察者模式

观察者模式

public class ObserverTest {
  public static void main(String[] args) {
    Subject subject = new Subject();
    Task1 task1 = new Task1();

    subject.addListener(task1);
    subject.addListener(new Task2());

    subject.notifyObserver("xxx");
    subject.remove(task1);
    subject.notifyObserver("yyy");
  }
}

class Subject {

  List container = new ArrayList<>();

  public void addListener(Observer observer) {
    container.add(observer);
  }

  public void remove(Observer observer) {
    container.remove(observer);
  }

  public void notifyObserver(Object object) {
    for (Observer observer : container) {
      observer.update(object);
    }
  }
}

interface Observer {
  void update(Object object);
}

class Task1 implements Observer {

  @Override
  public void update(Object object) {
    System.out.println("task1  " + object);
  }
}

class Task2 implements Observer {

  @Override
  public void update(Object object) {
    System.out.println("task2  " + object);
  }
}

你可能感兴趣的:(设计模式)