用法介绍Java Observer模式

Java Observer是一种设计模式,它定义了对象之间的一对多依赖性,当一个对象改变状态,它的所有依赖者都会自动被通知并更新。

一、Java Observer模式基础

1、Observer模式主要是用于实现分布式系统的事件服务,实现事件驱动架构。其主要由两类对象组成:被观察者(Subject)和观察者(Observer)。

// 被观察者
public class Subject {
    private List observers = new ArrayList();
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }
    public void notifyObservers(String message) {
        for (Observer observer : observers) {
            observer.update(message);
        }
    }
}

2、观察者(Observer)定义了一个更新接口,当被观察者状态发生改变时,这个接口就会被调用。

// 观察者
public interface Observer {
    void update(String message);
}

二、Java Observer模式实现步骤

1、首先,创建观察者接口和具体的观察者类。观察者接口定义了一个更新接口,具体的观察者类实现了观察者接口。

// 观察者接口
public interface Observer {
    void update(String message);
}

// 具体观察者类
public class ConcreteObserver implements Observer {
    public void update(String message) {
        System.out.println("ConcreteObserver get message: " + message);
    }
}

2、其次,创建被观察者类。被观察者类维护观察者列表,并实现注册观察者、移除观察者、通知观察者等方法。

// 被观察者类
public class Subject {
    private List observers = new ArrayList();

    public void registerObserver(Observer observer) {
        observers.add(observer);
    }
    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }
    public void notifyObservers(String message) {
        for (Observer observer : observers) {
            observer.update(message);
        }
    }
}

三、Java相应的Observer类的使用

1、Java内置的Observer模式主要涉及java.util.Observer接口和java.util.Observable类。Observable类是被观察者类,Observer接口是观察者接口。当Observable类的notifyObservers()方法被调用时,会通知所有已注册的观察者。

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

public class JavaObservable extends Observable {
    void change(String str) {
        setChanged();
        notifyObservers(str);
    }
}

public class JavaObserver implements Observer {
    @Override
    public void update(Observable o, Object arg) {
        System.out.println("Received response: " + arg);
    }
}

2、使用Java内置的Observer模式,可以通过创建Observable子类和Observer实现类,然后使用Observer实例注册Observable实例,最后通过Observable实例来通知Observer实例。

public static void main(String args[]) {
    JavaObserver observer = new JavaObserver();
    JavaObservable observable = new JavaObservable();
    observable.addObserver(observer);
    observable.change("Hello, Observer!");
}

原创文章,作者:小蓝,如若转载,请注明出处:https://www.beidandianzhu.com/g/1242.html

(0)
小蓝的头像小蓝
上一篇 2024-12-17
下一篇 2024-12-17

相关推荐

  • Python时间坐标轴探索

    时间坐标轴是数据可视化中常用的一种图表类型,它可以将时间序列数据以直观的方式呈现出来。本文将以Python为工具,深入探索Python时间坐标轴的使用方法和特性。 一、时间坐标轴介…

    程序猿 2024-12-17
  • Server的Python:从原理到实践

    Server是一种常见的网络服务端程序,而Python作为一门广泛应用的编程语言,也在服务器开发中扮演着重要的角色。本文将从多个方面对Server的Python进行详细的阐述,包括…

    程序猿 2024-12-24
  • Python变量指向对象

    在Python中,变量是用来存储数据的容器,而变量指向对象则是指变量将对象的地址作为值保存在内存中。当我们创建一个对象并将其赋值给变量时,实际上是将对象的引用存储在变量中。 一、变…

    程序猿 2024-12-17
  • Python常用的标准库

    Python是一种简单易学的编程语言,它提供了丰富的标准库,这些标准库包括了各种各样的功能模块,帮助开发人员快速实现各种任务。本文将从多个方面对常用的Python标准库进行详细阐述…

    程序猿 2024-12-28
  • Python中显示器隐藏代码

    显示器隐藏代码是指在程序运行过程中,将代码的执行过程隐藏起来,只显示结果而不显示具体的代码。这在一些敏感信息处理、保护知识产权等场景中非常有用。本文将从多个方面介绍在Python中…

    程序猿 2024-12-17
  • Python全栈高薪就业班简介与代码示例

    Python全栈高薪就业班是一门综合性的课程,旨在培养学员成为具备全栈开发技能的Python工程师。本文将从多个方面对Python全栈高薪就业班进行详细阐述,并提供相关代码示例。 …

    程序猿 2024-12-17
  • 安卓Python学习指南

    安卓平台上使用Python进行开发具有广泛的应用价值和发展潜力。本文将从多个方面详细阐述安卓Python学习的重要性和方法。 一、安卓开发环境搭建 1、安装Android Stud…

    程序猿 2024-12-21
  • Python占位符输入方式实例简介

    本文将详细介绍Python中的占位符输入方式,并提供相关的代码示例。首先,我们将解答什么是Python占位符输入方式。然后,我们将从多个方面对该主题进行详细阐述。 一、基本概念 占…

    程序猿 2024-12-17
  • 通过Python赚到的第一笔钱

    Python作为一门广泛应用于编程开发的语言,拥有众多功能和库,通过Python赚到第一笔钱成为许多开发者的目标。本文将从多个方面详细阐述通过Python赚到第一笔钱的经验。 一、…

    程序猿 2024-12-27
  • 图片python手写汉字识别

    本文将从多个方面对图片python手写汉字识别进行详细的阐述。 一、手写汉字识别技术概述 手写汉字识别是指利用计算机视觉和机器学习算法,对手写的汉字进行自动识别的过程。它可以应用于…

    程序猿 2024-12-22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

分享本页
返回顶部