Java设计模式之Observer模式 - 编程入门网
Java设计模式之Observer模式时间:2010-09-22Observer模式也叫观察者模式,是由GoF提出的23种软件设计模式的一种。Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。 本文介绍设计模式中的(Observer)模式的概念,用法,以及实际应用中怎么样使用Observer模式进行开发。 Observer模式的概念 Observer模式是行为模式之一,它的作用是当一个对象的状态发生变化时,能够自动通知其他关联对象,自动刷新对象状态。 Observer模式提供给关联对象一种同步通信的手段,使某个对象与依赖它的其他对象之间保持状态同步。 Observer模式的典型应用 - 侦听事件驱动程序设计中的外部事件 - 侦听/监视某个对象的状态变化 - 发布者/订阅者(publisher/subscriber)模型中,当一个外部事件(新的产品,消息的出现等等)被触发时,通知邮件列表中的订阅者 Observer模式的优点 - 对象之间可以进行同步通信 - 可以同时通知一到多个关联对象 - 对象之间的关系以松耦合的形式组合,互不依赖 Observer模式的结构 Java设计模式之Observer模式(2)时间:2010-09-22Observer模式的角色: Subject(被观察者) 被观察的对象。当需要被观察的状态发生变化时,需要通知队列中所有观察者对象。Subject需要维持(添加,删除,通知)一个观察者对象的队列列表。 ConcreteSubject 被观察者的具体实现。包含一些基本的属性状态及其他操作。 Observer(观察者) 接口或抽象类。当Subject的状态发生变化时,Observer对象将通过一个callback函数得到通知。 ConcreteObserver 观察者的具体实现。得到通知后将完成一些具体的业务逻辑处理。 JDK对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。 当然,我们也可以不使用JDK提供的类与接口而自己实现Observer模式。 Observer模式的应用范例 下面,我们使用JDK提供的接口与类来实现一个Observer模式用来模拟新闻订阅操作: 当一个新闻被发表时,系统一方面需要通知管理者审阅;另一方面需要通知订阅者。 文件一览: Client 测试类。 NewsPublisher 相当于ConcreteSubject角色。该类继承相当于Subject角色的java.util.Observable类。 SubscriberObserver 相当于ConcreteObserver角色。该类实现了相当于Observer角色的java.util.Observer接口。当NewsPublisher对象发生变化时得到通知,并向订阅者发送订阅邮件。 ManagerObserver 相当于ConcreteObserver角色。该类实现了相当于Observer角色的java.util.Observer接口。当NewsPublisher对象发生变化时得到通知,并向管理者发送消息邮件。 Java设计模式之Observer模式(3)时间:2010-09-22News 封装了新闻数据的类,与Observer模式无直接关系。 代码:
|
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |