读书笔记---Head First 设计模式--- 观察者模式
来源:互联网 发布:keil c语言 编辑:程序博客网 时间:2024/05/16 11:26
读书笔记—Head First 设计模式— 观察者模式
观察者模式(Observer)
观察者模式——定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
书上举出了一个公式:观察者模式 = 出版者(主题) + 订阅者(观察者),很浅显易懂,一个发送信息,一个接受信息。先实现观察者和被观察者接口,主题类接上被观察者接口,观察者接上观察者接口,利用松耦合方式结合,可观察者只知道观察者实现了观察者接口。被观察者类中实现添加观察者,去除观察者,和刷新数据接口。观察者从构造函数中传递主题类,进行注册。然后主题类就可以快速方便的完成数据传递。
不多说,上代码。
import java.util.ArrayList;interface Show{ void show(String text);}interface Observer{ void update(String text);}interface Observable{ void registerObserver(Observer o); void removeObserver(Observer o); void notifyObservers();}class Myclass implements Observable{ ArrayList<Observer> students; public Myclass() { // TODO Auto-generated constructor stub students = new ArrayList<>(); } @Override public void registerObserver(Observer o) { // TODO Auto-generated method stub this.students.add(o); } @Override public void removeObserver(Observer o) { // TODO Auto-generated method stub int i = students.indexOf(o); if(i >= 0) students.remove(i); } @Override public void notifyObservers() { // TODO Auto-generated method stub for (int i = 0; i < students.size(); i++) { students.get(i).update(String.valueOf(i+1)); } }}class Me implements Observer,Show { Observable myObservable; Me(Observable o){ myObservable = o; myObservable.registerObserver(this); } @Override public void update(String text) { // TODO Auto-generated method stub show(text); } @Override public void show(String text) { // TODO Auto-generated method stub System.out.println("我是第"+text+"个"); }}public class Observers { public static void main(String[] args) { // TODO Auto-generated method stub Observable myClass = new Myclass(); Observer me = new Me(myClass); myClass.notifyObservers(); }}
我设计了三个接口:Observer接口,Observable接口和Show接口,前面两个接口主要是为了说明观察者模式的设计思路,后面Show接口则是为了体现JAVA的多接口,单继承。使用接口可以更显的快捷。
不多说,直接上图。
偷个懒,不懂的评论见
阅读全文
0 0
- 【Head First设计模式-读书笔记】观察者模式
- 读书笔记---Head First 设计模式--- 观察者模式
- 《Head First设计模式》读书笔记2——观察者模式
- 《Head First设计模式》读书笔记之观察者模式
- 读书笔记2:Head First设计模式——观察者模式
- 《Head First 设计模式》读书笔记之观察者模式
- Head First设计模式读书笔记
- 读书笔记-《Head First 设计模式》
- 读书笔记《Head First设计模式》
- Head First 设计模式读书笔记
- 《Head First 设计模式》读书笔记
- Head First设计模式读书笔记
- head first 设计模式:观察者模式1
- Head First设计模式-观察者模式
- 《Head First 设计模式》观察者模式
- Head First 设计模式笔记--观察者模式
- 《Head First 设计模式》之观察者模式
- Head First 设计模式2 观察者模式
- macat
- Windows下Myeclipse不能卸载的解决方案Failed to load Library jvm
- 线程
- ERROR: JAVA_HOME is set to an invalid directory: C:\Program Files\Java\jdk1.8.0_ 73\bin
- BZOJ 1040 骑士 (并查集 树形dp)
- 读书笔记---Head First 设计模式--- 观察者模式
- 重入锁死
- 线性代数中的余子式、代数余子式、行列式、伴随矩阵、逆矩阵
- 形象化解析TCP/IP、Http的区别
- 文章标题
- 我为什么鼓励工程师写blog
- 信号量
- OpenTSDB数据写入HTTP API接口,统计总记录数
- 正确编译 DuiLib 静态库的方法