Java设计模式《十》观察者模式
来源:互联网 发布:苹果软件图标不见了 编辑:程序博客网 时间:2024/06/02 21:15
//观察者模式定义了一种一对多的依赖关系 让多个观察者对象同时监听某一个主题//这个主题对象在状态发生变化时,会通知所有观察者对象 是它们自动更新自己//观察者模式中抽象通知者依赖抽象观察者 且每一个具体观察者不一定都是要调用update()方法//使用委托 通知者和观察者可以互补知道 有客户端来决定通知谁可以处理上面的问题
抽象观察者类
//抽象观察者得到通知者的通知及时更新自己public abstract class Observer{ public abstract void update();}
具体的观察者类
//具体的观察者类public class ConcreteObserver extends Observer{ private String name; private String observerState; private ConcreteSubject subject; public ConcreteSubject getSubject(){ retrun subject; } public void setSubject(ConcreteSubject subject){ this.subject = subject; } public ConcreteObserver(ConcreteSubject subject,String name){ this.subject =subject; this.name=name; } public void update(){ observerState=subject.getSubjectState(); System.out.prinltn(name+""+observerState); }}
抽象通知者
//抽象通知者提供一个借口 可以增加删除和通知观察则对象public abstract class Subject{ private List<Observer> observers = new ArrayList<Observer>(); public void attach(Observer observer){ observers.add(observer) } public void detach(Observer observer){ observers.remove(observer); } public void noticeAll(){ Iterator<Observer> iterator = observers.iterator(); while(iterator.hasNext()){ iterator.next().update(); } }}
具体的观察者
//具体通知者将有关状态存入具体观察者对象 在具体通知者内部状态改变时 给登记过的观察扎发出通知public class ConcreteSubject extends Subject{ private String subjectState; public String getSubjectState(){ return subjectState; } public void setSubjectState(){ this.subjectState=subjectState; }}
测试案例
//观察者模式定义了一种一对多的依赖关系 让多个观察者对象同时监听某一个主题//这个主题对象在状态发生变化时,会通知所有观察者对象 是它们自动更新自己//观察者模式中抽象通知者依赖抽象观察者 且每一个具体观察者不一定都是要调用update()方法//使用委托 通知者和观察者可以互补知道 有客户端来决定通知谁可以处理上面的问题public class TestObserver{ public static void main(String[] args){ ConcreteSubject s = new ConcreteSubject(); s.attach(new ConcreteObserver(s, "X")); s.attach(new ConcreteObserver(s, "Y")); s.setSubjectState("aaa"); s.noticeAll(); }}
0 0
- Java设计模式《十》观察者模式
- Java设计模式之十(观察者模式)
- 设计模式C++实现十:观察者模式
- 设计模式之十:观察者模式(Observer)
- 设计模式(十)观察者模式
- 设计模式(二十) 观察者模式
- 设计模式—观察者模式(十)
- 设计模式(十):观察者模式
- java设计模式-----观察者
- JAVA 观察者设计模式
- java观察者设计模式
- java观察者设计模式
- java 观察者设计模式
- JAVA-观察者设计模式
- JAVA设计模式--观察者
- Java---观察者设计模式
- Java设计模式:观察者
- Java设计模式-观察者
- Java设计模式《九》建造者模式
- package导致的PAT提交错误
- 如何快速知道哪些中文期刊是中文核心期刊
- android中填充类似listview的适配器内部讲解
- 关于命令行的一些用法
- Java设计模式《十》观察者模式
- C#参考:Linq 概述
- mount device or resource busy
- context和getApplicationContext()
- Qt判断文件 或 文件夹(路径)是否存在
- Docker for Windows 中文文档(3)——Docker Settings
- Java设计模式《十一》抽象工厂模式
- 用javascript实现图片等比例缩放
- 数据结构之数组和链表