您的位置:首页 > 编程语言 > Java开发

Java设计模式——Observer(观察者)模式

2015-06-02 17:22 295 查看
在多个对象之间建立一对多的关系,以便当一个对象状态改变的时候,其他所有依赖于这个对象的对象都能得到通知,并被自动更新。

适用情况:

当一个抽象模型有两个方面,其中一个方面依赖于另一方面。将这二者封装在独立的对象中以使它们可以各自独立地改变和复用。


当对一个对象的改变需要同时改变其它对象,而不知道具体有多少对象有待改变。


当一个对象必须通知其它对象,而它又不能假定其它对象是谁。




调用setChanged()方法,触发继承自Observable类的Observers()方法将这次改变广播出去。

notifyObservers()方法调用每个注册的观察者对象的update()方法。

BallisticsLabel对象不必保留对它监视的Tpeak对象的引用。而在BallisticsLabel类的构造器中,该对象被注册为Tpeak对象变化的监听器。当Tpeak对象发生变化时,该标签类的update()方法首先会收到一个类型为Observable的Tpeak对象,将该参数强制转化为Tpeak类对象之后,从该Tpeak类对象中提取数值,最后重新绘制该标签。上述变化从GUI层传递到业务层,最后又返回到GUI层。

该设计将业务逻辑对象与用于表示它的GUI元素相分离,有两个关键步骤:

实现Observer接口的观察者类必须向自己关注的对象注册自己,收到事件通知后,观察者类必须做出合适的操作,比如重新绘制自己,以完成更新。
拓展Observable类的被观察者类在它们的数据发生变化的时候,必须记得去通知相关的观察者。

         对于大型GUI应用程序,请务必将每个相关对象都注册为事件的监听器,而不要使用一个中介对象来监听所有的事件。

        MVC设计可以把应用程序划分成松散耦合的层,每个层可以独立发生变化,并且可以运行在不同的机器上。Observer模式支持MVC,这也促进了软件的分层,给软件开发和部署带来许多实在的好处。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: