观察者模式
观察者模式是定义对象之间的一种一对多的依赖关系,使得每当一个对象改变状态时,所有依赖于它的对象都会得到通知并得到更新。
就我理解,比如你妈喊你回家吃饭,在这个场景当中老妈是一个通知者,孩子是观察者,通知者(老妈)和观察者(孩子)是一对多
的关系。当饭点到了,老妈就开始给孩子发送通知,叫他们回家吃饭。
具体的类图关系如下所示:
观察者接口
public interface ObserverI { public void update(); }
观察者实现类
public class ObserverImpl implements ObserverI{ private String tag; public ObserverImpl(String tag){ this.tag=tag; } @Override public void update() { System.out.println(tag+"收到通知了"); } }
通知者接口
public interface SubjectI { public void attach(ObserverI ob);//增加观察者 public void detach(ObserverI ob);//减少观察者 public void notifyObserver();//通知观察者 }
通知者实现类
public class SubjectImpl implements SubjectI{ private List<ObserverI> ObList=new ArrayList<ObserverI>(); @Override public void attach(ObserverI ob) { ObList.add(ob); } @Override public void detach(ObserverI ob) { ObList.remove(ob); } @Override public void notifyObserver() { for(ObserverI ob:ObList){ ob.update(); } } }
发通知
public static void main(String args[]){ ObserverI ob1=new ObserverImpl("孩子1"); ObserverI ob2=new ObserverImpl("孩子2"); ObserverI ob3=new ObserverImpl("孩子3"); SubjectI subject=new SubjectImpl(); subject.attach(ob1); subject.attach(ob2); subject.attach(ob3); //你妈喊你回家吃饭 subject.notifyObserver(); }
执行结果为
代码地址:https://git.oschina.net/huangbei1990/DesignPatterns.git