标签:
观察者模式:一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。
(Observer)将自己注册到被观察对象(Subject)中,被观察对象将观察者存放在一个容器(List)里。
被观察对象(Subject)发生了某种变化,从容器中得到所有注册过的观察者,将变化通知观察者。
代码实例:
//被观察者接口 public interface Subject { void add(Observer observer); void remove(Observer observer); void notifyObserver(); } //具体被观察者类 public class ConcreteSubject implements Subject{ private List<Observer> list = new ArrayList<>(); @Override public void add(Observer observer) { list.add(observer); } @Override public void remove(Observer observer) { list.remove(observer); } @Override public void notifyObserver() { for (Observer observer : list) { observer.update(); } } } //观察者接口 public interface Observer { void update(); } //具体观察者类1 public class ConcreteObserver1 implements Observer { @Override public void update() { System.out.println("观察者1已更新!"); System.out.println("--------------------"); } } //具体观察者类2 public class ConcreteObserver2 implements Observer { @Override public void update() { System.out.println("观察者2已更新!"); System.out.println("--------------------"); } } //测试类 public class Test { public static void main(String[] args) { Subject subject = new ConcreteSubject(); Observer ob1 = new ConcreteObserver1(); Observer ob2 = new ConcreteObserver2(); subject.add(ob1); subject.add(ob2); subject.notifyObserver(); } } 输出结果: 观察者1已更新! -------------------- 观察者2已更新! --------------------
标签:
原文地址:http://www.cnblogs.com/crazy2016/p/5572871.html