设计模式20-观察者模式
1. 概念
定义对象间一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知自动更新
2. 案例
package org.demo.observe.demo01; import java.util.ArrayList; import java.util.Iterator; import java.util.List; abstract class Observer{ //观察者 abstract void update(String status) ; //更新 } abstract class Subject { //被观察的对象 protected String status ; public Subject(String status){ this.status = status ; } public String getStatus() { return status; } public void setStatus(String status) { this.status = status; } private List<Observer> observers = new ArrayList<Observer>() ; public void attach(Observer observer){ observers.add(observer) ; } public void remove(Observer observer){ observers.remove(observer) ; } public void MyNotify(){ for(Iterator<Observer> it = observers.iterator() ; it.hasNext() ;){ ((Observer)it.next() ).update(status); } } } class Obs01 extends Observer{ @Override void update(String status) { System.out.println("观察者一发现了变化:"+status); } } class Obs02 extends Observer{ @Override void update(String status) { System.out.println("观察者二发现了变化:"+status); } } class ConcreteSubject extends Subject{ public ConcreteSubject(String status) { super(status); } } public class Demo01 { public static void main(String[] args) { ConcreteSubject cs = new ConcreteSubject("有新的新闻了 .") ; cs.attach(new Obs02()) ; cs.attach(new Obs01()) ; cs.MyNotify() ; cs.setStatus("又来新闻了") ; cs.MyNotify() ; } }