`
zhu1xu2
  • 浏览: 4951 次
  • 性别: Icon_minigender_1
  • 来自: 长沙
社区版块
存档分类
最新评论

JAVA设计模式(一)观察者模式

阅读更多
观察者模式定义了对象之间的一对多依赖,这样一来,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。

主题和观察者定义了一对多的关系。观察者依赖于此主题,只要主题状态一有改变,观察者就会被通知。

类图:


package com.zaxk.study.pattern;

import java.util.Observable;
import java.util.Observer;

/**
 * 观察者模式
 * Created by ZhuXu on 2017/11/9 0009.
 */
public class ObserverTest {

    public static void main(String[] args) {
        School school = new School();
        Student student = new Student(school);
        Teacher teacher = new Teacher(school);
        school.notice();
    }
}

/**
 * 观察者:学生
 */
class Student implements Observer {

    Observable observable;

    public Student(Observable observable) {
        this.observable = observable;
        observable.addObserver(this);
    }

    @Override
    public void update(Observable o, Object arg) {
        if (o instanceof School) {
            System.out.println("Student 收到通知:" + ((School) o).getNotice());
        }
    }
}

/**
 * 观察者:老师
 */
class Teacher implements Observer {

    Observable observable;

    public Teacher(Observable observable) {
        this.observable = observable;
        observable.addObserver(this);
    }

    @Override
    public void update(Observable o, Object arg) {
        if (o instanceof School) {
            System.out.println("Teacher 收到通知:" + ((School) o).getNotice());
        }
    }
}

/**
 * 被观察者:学校
 */
class School extends Observable {

    String notice;

    public void notice() {
        setNotice("放假通知:1~7号放假");
        setChanged();
        notifyObservers();
    }

    public String getNotice() {
        return notice;
    }

    public void setNotice(String notice) {
        this.notice = notice;
    }
}


JDK中已实现的观察者模式:Swing中的事件处理。
当组件状态(被观察者)发生改变时,通知监听器(观察者)处理对应事件。
  • 大小: 25.3 KB
分享到:
评论

相关推荐

    java设计模式之观察者模式

    Java设计模式是软件开发中的重要概念,它们是解决常见编程问题的经验总结,使得代码更加可复用、可扩展和易于维护。观察者模式(Observer Pattern)是这些模式中的一种,它在多对一的关系中使用,当一个对象的状态...

    设计模式之观察者模式Java实现

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...

    java 设计模式 观察者模式 简单实例 包括测试test类

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或者发布...

    Java 设计模式-观察者模式(Observer)

    结合微信公众号讲解观察者模式,生动形象,关键是上手快啊

    设计模式--观察者模式java例子

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于事件驱动的系统或者...

    java观察者模式观察者模式

    观察者模式是设计模式中的一种行为模式,它在Java编程中有着广泛的应用。该模式的主要目的是定义对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式也被...

    Java设计模式——观察者模式

    首先,我们来看"Java设计模式——观察者模式的两种情况": 1. **主动通知**: 在这种情况下,被观察者对象在自身状态发生变化时,会主动调用`Observable`接口提供的`notifyObservers()`方法,将变化通知给所有注册的...

    java23种设计模式之观察者模式

    **观察者模式(Observer Pattern)**是软件设计模式中的一种行为模式,它在Java中有着广泛的应用。这个模式的核心思想是“一对多”的依赖关系,即一个主题对象(Subject)可以被多个观察者(Observer)关注,当主题...

    Java常用的3中设计模式代码即工厂模式、单例模式、观察者模式demo

    观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在Java中,`java.util.Observable`和`java.util.Observer`接口提供了...

    JAVA设计模式(java设计)

    - 观察者模式:定义对象之间的一对多依赖关系,当一个对象的状态改变时,所有依赖于它的对象都会得到通知并自动更新。 - 状态模式:允许对象在其内部状态改变时改变其行为,看起来像改变了它的类。 - 策略模式:...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    Java设计模式是软件工程中的一种最佳实践,它总结了在特定场景下解决常见问题的经验,为程序员提供了可重用的解决方案。本资料“《java设计模式》课后习题模拟试题解答——刘伟.zip”主要涵盖了Java设计模式的学习与...

    观察者模式java实现观察者设计模式

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在Java中,我们可以利用Java提供的...

    java设计模式系列之观察者模式代码

    今天我们要深入探讨的是“观察者模式”,也称为发布-订阅(Publish-Subscribe)模式,它属于行为设计模式的一种。这个模式的核心思想是定义对象间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的...

    java设计模式-观察者 小案例

    在这个"java设计模式-观察者 小案例"中,我们可能会看到一个简单的模拟,雅典娜作为观察者,而其他角色(如圣斗士)则是被观察的对象。雅典娜的角色代表了观察者,当被观察对象(比如某个事件或状态)发生变化时,她...

    Java内置观察者模式

    观察者模式(Observer Pattern)是设计模式中的一种行为模式,它允许一个对象,当其状态发生改变时,能够自动通知所有依赖它的其他对象。在Java中,这种模式已经被内置到语言核心,使得开发者可以轻松地实现事件驱动...

    java观察者模式实例

    观察者模式是设计模式中的一种行为模式,它在软件工程中扮演着重要的角色,尤其是在构建可扩展和可维护的系统时。在这个实例中,我们将深入理解如何在Java中实现观察者模式,以及它如何利用继承和多态性来增强概念...

    运用MVC模式及观察者模式的java小程序

    在这个名为“运用MVC模式及观察者模式的java小程序”的项目中,我们重点探讨了两种经典的设计模式:Model-View-Controller(MVC)模式和Observer(观察者)模式。这两种模式在JavaWeb开发中扮演着至关重要的角色。 ...

Global site tag (gtag.js) - Google Analytics