所谓观察者模式是指当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。《设计模式》一书对Observer是这样描述的:定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都将得到通知并自动更新。 JDK提供了对observer设计模式的支持: 通过java.util.Observable类扮演Subject(被观察者)角色,一个类只需通过继承java.util.Observable类便可担当ConcreteSubject角色; 通过java.util.Observer接口扮演Observer(观察者)角色,一个类只需实现java.util.Observer接口便可担当ConcreteObserver角色。 java.util.Observable的实现类通过调用setChanged()方法以及notifyObservers(Object)方法便可简单地通知Observer。 下面写了一个程序实现观察者模式:包括被观察者Children.java(孩子)继承Observable,观察者Father.java(父亲)和Mother.java(母亲)实现Observer接口,还有一个测试类ClientTest_Oberver.java。Industry.java:
Person.java:
Children.java:
Father.java:
ClientTest_Oberver.java:
ps:此程序是参考网上的一个例子改写而成,我觉得作为观察者模式的例子非常好。使用观察者模式的好处是支持广播通信,被观察者会向所有的登记过的观察者发出通知。而且,观察者模式实现了表示层与数据逻辑层的分离,并定义了稳定的更新消息传递机制,类别清晰。