博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JAVA设计模式系列(1)----观察者模式
阅读量:4284 次
发布时间:2019-05-27

本文共 1552 字,大约阅读时间需要 5 分钟。

概念

观察者模式(Observer),又叫发布-订阅模式(Publish/Subscribe),定义对象间一种一对多的依赖关系,使得每当一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更新

其中,Subject类是主题,它把所有对观察者对象的引用文件存在了一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供了一个接口,可以增加和删除观察者对象;Observer类是抽象观察者,为所有的具体观察者定义一个接口,在得到主题的通知时更新自己;ConcreteSubject类是具体主题,将有关状态存入具体观察者对象,在具体主题内部状态改变时,给所有登记过的观察者发出通知;ConcreteObserver是具体观察者,实现抽象观察者角色所要求的更新接口,以便使本身的状态与主题的状态相协同。

 

示例

1.主题Subject

public class Subject {    //观察者数组    private Vector
oVector = new Vector<>(); //增加一个观察者 public void addObserver(Observer observer) { this.oVector.add(observer); } //删除一个观察者 public void deleteObserver(Observer observer) { this.oVector.remove(observer); } //通知所有观察者 public void notifyObserver() { for(Observer observer : this.oVector) { observer.update(); } } }

 

2. 抽象观察者 Object

public interface Observer {    //更新    public void update();}

 

3. 具体主题 ConcreteSubject 

public class ConcreteSubject extends Subject {    //具体业务    public void doSomething() {        //...        super.notifyObserver();    }    }

 

4. 具体观察者 ConcreteObserver 

public class ConcreteObserver implements Observer {    @Override    public void update() {        System.out.println("收到消息,进行处理");    }}

 

5. client 客户端

public class Client {        public static void main(String[] args) {        //创建一个主题        ConcreteSubject subject = new ConcreteSubject();        //定义一个观察者        Observer observer = new ConcreteObserver();        //观察        subject.addObserver(observer);        //开始活动        subject.doSomething();    }    }

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

转载地址:http://mycgi.baihongyu.com/

你可能感兴趣的文章
创建一个简单的device_create_file文件节点
查看>>
android linux 休眠 深度睡眠 查看 方法 调试
查看>>
ubuntu mount cifs
查看>>
一个简单的framebuffer的显示使用例子
查看>>
inux下串口编程简单实例
查看>>
SELinux app权限配置
查看>>
Linux下的串口编程
查看>>
pthread_create Linux函数 线程创建
查看>>
linux创建线程之pthread_create
查看>>
怎样添加earlysuspend到一个普通驱动中
查看>>
怎样通过framebuffer来传递关屏信息
查看>>
BootLoader启动过程分析
查看>>
Linux获取/dev/input目录下的event对应的设备
查看>>
android性能测试工具dumpsys命令的用法
查看>>
Android性能测试常用命令
查看>>
性能测试常用的linux命令
查看>>
Linux性能测试 命令大全
查看>>
RTOS 在 stm32f407 探索者上的移植(二) FreeRTOS v9.0.0 移植
查看>>
svn (八) work flow 中的5 解决任何冲突
查看>>
svn (八) work flow 中的6 提交你的修改
查看>>