读书笔记-----------------------
观察者模式:定义了对象之间的一对多依赖关系,当一个对象(主题对象)的状态改变时,它的所有依赖者(观察者对象)都会收到通知并自动更新。
观察者模式实现了主题对象与观察者对象之间的松耦合,当有新的观察者时,无需修改主题对象的代码,只需要新的观察者对象实现接口。在程序运行的过程中,可以随时注册和删除观察者而不影响主体对象。
软件设计原则1:努力在交互对象之间实现松耦合,使它们之间的互相依赖降到最低,从而提高可复用性。
Java内置了对观察者模式的支持:java.util.Observable类和java.util.Observer接口。 但它有些局限。
在观察者模式中,传递数据的方式有“推”和“拉”两种,Java内置的实现支持这两种方式,然而较常用的为“推”数据。
观察者模式以松耦合的方式在对象之间传递状态,MVC是其代表。
我的理解-------------------------
1 有两个主要接口:主题接口,观察者接口
2 主题接口有添加,删除,以及通知观察者的行为;观察者接口有更新的行为。
3 松耦合也是代表有耦合,主题方知道谁订阅了它;订阅方知道它订阅了谁。
4 可以在订阅方的构造方法中传递一个接口类型的主题对象,调用主题对象的添加用户的方法。
5 主题方通过一个私有的List来保存订阅者信息,一旦有更新,遍历List,逐个调用订阅方的更新方法。
6 订阅,退订的行为在代码中的表现为List对元素的添加或删除。
代码实例------------------- -----
public interface Subject { public void addObserver(Observer observer); public void removeObserver(Observer observer); public void notifyObservers(); } public interface Observer { public void update(String blog); } //博客 public class Blogger implements Subject { private List<Observer> observers; private String blog; public Blogger() { observers = new ArrayList<Observer>(); } public void addObserver(Observer observer) { observers.add(observer); } public void removeObserver(Observer observer) { observers.remove(observer); } public void notifyObservers() { for (Observer o : observers) { o.update(blog); } } // 发表新博客文章 public void writeNewBlog(String blog) { this.blog = blog; notifyObservers(); } } //邮件订阅者 public class EmailSubscriber implements Observer { public void update(String blog) { // 发送电子邮件 } } //RSS订阅者 public class RssSubscriber implements Observer { public void update(String email) { // 更新RSS信息 } }
相关推荐
设计模式--观察者模式java例子
Android设计模式--观察者模式DEMO 观察者模式是一个使用频率非常高的模式,他最常用的地方是GUI系统和订阅-发布系统。 该模式的最重要的作用就是解耦,使观察者和被观察者之间依赖尽可能小,甚至好无依赖。
JAVA-设计模式-行为型模式-观察者模式
设计模式-观察者模式(讲解及其实现代码)
java常用设计模式-观察者模式
跟我一起学 设计模式-观察者模式 京华志&精华志出品 希望大家互相学习,互相进步 支持CSDN 支持微软
设计模式--观察者 c++版本 有源码能运行
c++设计模式-行为型模式-观察者模式;qt工程;c++简单源码; 观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。这种模式...
用c++和lua实现的观察者模式小栗子,其中c++版本参考了别人的实现
设计模式之观察者模式Java版本实现和UML类设计图
观察者模式及实例,适合初学者阅读 。。。。。。。。。。。。。。。
结合微信公众号讲解观察者模式,生动形象,关键是上手快啊
设计模式专题之(十八)观察者模式--设计模式观察者模式示例代码(python--c++)
观察者模式,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
http://blog.csdn.net/webwalker/article/details/7246425
Java设计模式-第22章-观察者模式.ppt该文档详细且完整,值得借鉴下载使用,欢迎下载使用,有问题可以第一时间联系作者~
HeadFirst 设计模式学习笔记2--观察者模式 demo http://blog.csdn.net/laszloyu/archive/2010/05/12/5581769.aspx
ios平台下讲解观察者模式简单代码,可也查看博客对设计模式的简单介绍或者定义http://blog.sina.com.cn/s/blog_161d504630102wxis.html
基于MFC实现的消息监听机制,利用了设计模式中的观察者模式,对线程间的同步做了优化,以及可以选择消息的发送类型:同步或异步发送。对于监听者而言在注册监听的同时可以选择监听的消息类型,避免了发送者发送的...