设计模式-4.观察者模式
来源:互联网 发布:2016淘宝会员名字大全 编辑:程序博客网 时间:2024/06/06 14:17
观察者模式在实际开发中运用很多,尤其是涉及到界面开发中,鼠标点击一个button,就会触发button对应的事件监听,引起各个事件
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态上发生变化时,会通知所有观察者对象。
观察者模式组成:
抽象主题角色:把所有对观察者对象的引用保存在一个集合中,抽象主题提供一个接口,可以增加和删除观察者角色。
抽象观察者角色:为所有具体的观察者定义一个接口,在得到主题的通知时更新自己。
具体主题角色:在具体主题内部状态改变时,给所有登记过的观察者发出通知,具体主题角色用一个子类实现。
具体观察者角色:该角色实现抽象观察者角色所要求的更新接口,以便使本身状态与主题的状态相协调,通常用一个子类实现。
抽象主题角色:
public interface Watched{public void addWatcher(Watcher watcher);public void removeWatcher(Watcher watcher);public void notifyWatcher(String str);}
抽象观察者角色:
public interface Watcher{public void update(String str);}
具体主题角色:
import java.awt.List;import java.util.ArrayList;public class ConcreteWatched implements Watched{private ArrayList<Watcher> list = new ArrayList<Watcher>();@Overridepublic void addWatcher(Watcher watcher){list.add(watcher);}@Overridepublic void removeWatcher(Watcher watcher){list.remove(watcher);}@Overridepublic void notifyWatcher(String str){for(Watcher watcher : list){watcher.update(str);}}}具体观察者色:
public class ConcreteWatcher implements Watcher{public void update(String str){System.out.println(str);}}这里的watched可以认为就是subject。
结果:
*************************************************************
开心
开心
-------------------
不开心
*************************************************************
值得注意的是:观察者模式在JDK中运用得非常多。
0 0
- 设计模式-4.观察者模式
- 模式设计:观察者模式
- 设计模式-----观察者模式
- 设计模式-观察者模式
- 设计模式--观察者模式
- 设计模式:观察者模式
- 设计模式-----观察者模式
- 设计模式:观察者模式
- 设计模式-观察者模式
- 设计模式 观察者模式
- 设计模式-观察者模式
- 设计模式-【观察者模式】
- 设计模式-观察者模式
- 设计模式 -- 观察者模式
- 设计模式-观察者模式
- 【设计模式】观察者模式
- 设计模式- 观察者模式
- 设计模式- 观察者模式
- 底部菜单栏(一)Fragment+FragmentTabHost 来实现底部菜单栏方式
- hdu 1081 To the Max
- 扩展欧几里德算法求解线性同余方程
- JAVA基础——多线程
- halcon学习笔记(1)——halcon开发环境配置及其他
- 设计模式-4.观察者模式
- 多线程——改变线程的名字(setPriority(int)方法、toString()方法以及wait方法和sleep方法的异同点)
- 工作笔记-Datatable部分
- OC中UIKit框架结构图
- 排序算法之基本概念与总结
- SAP调用外部web service
- 关于php传值的一些问题自己的理解(二)
- jquery获取元素所有关系节点
- UGUI - 制作九宫贴图