`
zw1502071
  • 浏览: 6925 次
社区版块
存档分类
最新评论

观察者模式学习笔记

阅读更多

观察者模式

定义:对象间的一种一对多的依赖关系。当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

在目标对象中会有观察者集合,当目标对象有变化时将会通知所有观察者集合对象做相关更新操作。

 

java中的观察者模式

目标对象

需要继承java.util.Observable类,需要调用this.setChanged()方法进行状态changed设置为TRUE

//主动通知,推方式

this.notifyObservers(this.content)

//拉方式

this.notifyObservers();

 

观察者

实现java.util.Observer接口并实现update方法,对于推和拉方式都支持

 

Swing中的观察者:事件处理,swing组件式被观察的目标,而每个实现监听器的类就是观察者,监听器的接口就是观察者的接口,在调用addXXXListener方法的是有就相当于注册观察者

 

例子:水质监测系统中当水质水平为正常时是通知监测人员;当为轻度污染时,还要通知预警人员和检测人员;当为中度或者重度时需要通知监测人员、预警人员、检测部门领导

思路:水质记录为目标,检测人员、预警人员、检测部门领导为观察者

在水质记录目标中对水质等级进行set值的时候调用notifyWatchers方法进行通知,在通知方法中通过当前水质等级判断通知那些观察者。

示例代码:

if(this.polluteLevel >= 0) {

    //通知监测人员

    if("监测人员“.equals(watcher.getJob())){

      watcher.update(this);

    }

}

 

if(this.polluteLevel >= 1) {

    //通知预警人员

    if("预警人员“.equals(watcher.getJob())){

      watcher.update(this);

    }

}

if(this.polluteLevel >= 2) {

    //通知监测部门领导

    if("监测部门领导“.equals(watcher.getJob())){

      watcher.update(this);

    }

}
这样就可以满足0:监测人员;1:监测人员、预警人员;2:监测人员、预警人员、监测部门领导;
与中介者模式结合:下拉级联菜单可以将所有下拉列表中的动作封装到一起
 
分享到:
评论

相关推荐

    观察者模式

    在Head First的观察者模式学习笔记中,我们可以深入理解这个模式的原理和应用。首先,观察者模式涉及到两个主要的角色:主题(Subject)和观察者(Observer)。主题是被观察的对象,它可以是任何具有可变状态的对象...

    HeadFirst 设计模式学习笔记2--观察者模式 demo

    总的来说,HeadFirst设计模式的学习笔记2关于观察者模式的演示,旨在帮助开发者理解如何使用观察者模式来构建可扩展的系统。通过实际的代码示例,我们可以更深入地掌握这一模式,并将其应用到日常开发中,提升代码的...

    设计模式学习笔记

    本学习笔记将重点关注“观察者模式”,这是一种行为设计模式,用于在对象之间定义一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 观察者模式的主要组成部分包括...

    23种设计模式学习笔记及源码

    6. **观察者模式**:定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。Java中的`Observer`和`Observable`接口就是这种模式的体现。 7. **装饰器模式**:...

    C#设计模式学习笔记

    C#设计模式学习笔记是一份详尽的资源,适合任何希望深入了解如何在C#编程中应用设计模式的开发者。这份笔记涵盖了多种设计模式,旨在提升代码的可读性、可维护性和可扩展性,这些都是软件开发中至关重要的要素。 ...

    java线程学习笔记

    Java 线程学习笔记 Java 线程创建有两种方法: 1. 继承 Thread 类,重写 run 方法:通过继承 Thread 类并重写 run 方法来创建线程,这种方法可以使线程具有自己的执行逻辑。 2. 实现 Runnable 接口:通过实现 ...

    Head First 设计模式学习笔记(十四)模式的组合使用

    在《Head First 设计模式学习笔记(十四)模式的组合使用》中,作者探讨了如何在实际编程中灵活地组合多种设计模式以解决复杂问题。这篇文章可能是基于《Head First 设计模式》这本书的一个章节,该书是设计模式领域...

    Head.First 设计模式学习笔记.pdf

    ### Head.First 设计模式学习笔记知识点总结 #### 一、设计模式概述 设计模式是一种用于解决软件设计中常见问题的标准化方法。通过采用设计模式,开发者可以提高代码的复用性、灵活性和可维护性。《Head First 设计...

    Java入门学习笔记

    设计模式是解决常见编程问题的模板,如单例模式、工厂模式和观察者模式。最后,笔记可能会介绍Java标准库的一些重要部分,如JDBC(Java数据库连接)用于数据库操作,或者Swing和JavaFX用于构建图形用户界面。 每道...

    #资源大人分享计划# 设计模式学习笔记.rar

    在这个“#资源大人分享计划# 设计模式学习笔记.rar”压缩包中,我们可以期待找到一系列关于设计模式的详细学习资料,包括定义、类图、代码示例以及各种使用场景,这些都将帮助我们深入理解并掌握设计模式。...

    《设计模式》学习笔记

    ### 设计模式学习笔记 #### 引言 设计模式(Design Patterns)是在软件设计领域内广泛应用的一种实践指南,它提供了一系列解决常见问题的方案。设计模式可以被理解为面向对象软件设计的经验总结,是对特定面向对象...

    设计模式之美—学习笔记

    此外,还有一些其他的重要模式,如观察者模式(Observer),它定义了对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。职责链模式(Chain of Responsibility)让多...

    C++ 学习笔记 整理

    9. **设计模式**:学习和应用常见的设计模式(如工厂模式、单例模式、观察者模式等)能提高代码的可读性和可维护性。 10. **调试技巧**:学会使用调试工具,如GDB或IDE内置的调试器,可以帮助快速定位和解决问题。 ...

    GoF 23种设计模式学习笔记

    "GoF 23种设计模式学习笔记" 是一个深入探讨这23个经典设计模式的资源,这些模式最初由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位作者在1994年的著作《设计模式:可复用面向对象软件的基础》中...

    图解java设计模式_学习笔记_java开发

    8. **观察者模式**:定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 9. **职责链模式**:将请求沿着处理者链进行传递,直到某个处理者处理该请求,使得...

    java学习笔记markdown

    7. **设计模式**:介绍常见的设计模式,如单例、工厂、装饰器、观察者等,帮助提升代码的复用性和可维护性。 8. **反射机制**:探讨Java反射API的使用,包括动态获取类信息、创建对象、调用方法等功能,这对于理解...

    java设计模式学习笔记,以及各种模式的代码实现

    16. **观察者模式**(订阅者模式):定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 17. **命令模式**:将请求封装为一个对象,以便使用不同的请求、...

Global site tag (gtag.js) - Google Analytics