iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >怎么在Java项目中实现一个内置观察者模式
  • 845
分享到

怎么在Java项目中实现一个内置观察者模式

java内置观察者模式观察 2023-05-31 08:05:16 845人浏览 安东尼
摘要

这期内容当中小编将会给大家带来有关怎么在Java项目中实现一个内置观察者模式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。主要使用到的Java api就两个类:Observer接口:观察者对象,监听被观察

这期内容当中小编将会给大家带来有关怎么在Java项目中实现一个内置观察者模式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

主要使用到的Java api就两个类:

Observer接口:观察者对象,监听被观察者对象数据变化,一是数据发生变化 ,就做出相应地啥响应。
Observable类:被观察者对象,提供添加及移出观察者对像方法,数据发生哟完成时并通知所有已经添加进来的观察者对象。

被观察者代码示例:

//Observable是被观察者对象接口,实现该接口就是:目标(被观察者)的具体实现public class TargetObservable extends Observable { // 要观察的数据:消息发生改变时,所有被添加的观察者都能收到通知 private String message; public String getConent() {  return message; } public void setMessage(String message) {  this.message = message;  // 被观察者数据发生变化时,通过以下两行代码通知所有的观察者  this.setChanged();  this.notifyObservers(message); }}

2个观察者代码示例:

//Observer对象是观察者,实现Observer的对象就是具体的观察者对象public class TargetObserver implements Observer { // 定义观察者名称 private String name; public String getObserverName() {  return name; } public void setObserverName(String observerName) {  this.name = observerName; } @Override public void update(Observable arg0, Object arg1) {  //更新消息数据  System.out.println(name + "收到了发生变化的数据内容是:"    + ((TargetObservable) arg0).getConent()); }}
public class TargetObserver01 implements Observer { // 定义观察者名称 private String name01; public String getObserverName() {  return name01; } public void setObserverName(String observerName) {  this.name01 = observerName; } @Override public void update(Observable arg0, Object arg1) {  //更新消息数据  System.out.println(name01 + "收到了发生变化的数据内容是:"    + ((TargetObservable) arg0).getConent()); }}

测试代码:

 public static void main(String[] args) {  // 创建一个具体的被 观察者  TargetObservable observable = new TargetObservable();  // 创建第一个观察者  TargetObserver one = new TargetObserver();  one.setObserverName("我是观察者A");  // 创建第二个观察者  TargetObserver01 two = new TargetObserver01();  two.setObserverName("我是观察者B");  // 注册观察者  observable.addObserver(one);  observable.addObserver(two);  // 目标更新天气情况  observable.setMessage("***我要更新的数据***"); }}

执行结果:

我是观察者B收到了发生变化的数据内容是:—–我要更新的数据—–我是观察者A收到了发生变化的数据内容是:—–我要更新的数据—–

模式优点:

一个被观察者可以对应多个观察者,当被观察者发生变化的时候,他可以将消息通知给所有已经添加观察者。基于接口实现为程序提供了更大的灵活性。

但在使用时要注意根据条件及时添加或移除观察者对象,否则可能导致意料外结果 。

最后附上Observer和Observable的原码,这样我们自己在写的时候就知道如何下手了:

package java.util;import java.util.Observable;public interface Observer { void update(Observable var1, Object var2);}
package java.util;import java.util.Observer;import java.util.Vector;public class Observable { private boolean changed = false; private Vector<Observer> obs = new Vector(); public Observable() { } public synchronized void addObserver(Observer var1) {  if(var1 == null) {   throw new NullPointerException();  } else {   if(!this.obs.contains(var1)) {    this.obs.addElement(var1);   }  } } public synchronized void deleteObserver(Observer var1) {  this.obs.removeElement(var1); } public void notifyObservers() {  this.notifyObservers((Object)null); } public void notifyObservers(Object var1) {  Object[] var2;  synchronized(this) {   if(!this.changed) {    return;   }   var2 = this.obs.toArray();   this.clearChanged();  }  for(int var3 = var2.length - 1; var3 >= 0; --var3) {   ((Observer)var2[var3]).update(this, var1);  } } public synchronized void deleteObservers() {  this.obs.removeAllElements(); } protected synchronized void setChanged() {  this.changed = true; } protected synchronized void clearChanged() {  this.changed = false; } public synchronized boolean hasChanged() {  return this.changed; } public synchronized int countObservers() {  return this.obs.size(); }}

上述就是小编为大家分享的怎么在Java项目中实现一个内置观察者模式了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: 怎么在Java项目中实现一个内置观察者模式

本文链接: https://www.lsjlt.com/news/224456.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 怎么在Java项目中实现一个内置观察者模式
    这期内容当中小编将会给大家带来有关怎么在Java项目中实现一个内置观察者模式,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。主要使用到的Java API就两个类:Observer接口:观察者对象,监听被观察...
    99+
    2023-05-31
    java 内置观察者模式 观察
  • 怎么在Java项目中实现一个观察者模式
    怎么在Java项目中实现一个观察者模式?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。观察者模式:对象间的一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象(被观察)。...
    99+
    2023-05-31
    java 观察 观察者模式
  • 怎么在Android中实现一个观察者与被观察者
    本篇文章给大家分享的是有关怎么在Android中实现一个观察者与被观察者,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。概述:观察者模式(又被称为发布-订阅(Publish/Su...
    99+
    2023-05-30
    android
  • java观察者模式怎么实现
    要实现观察者模式,你可以按照以下步骤进行: 定义观察者接口(Observer):该接口应该包含一个方法,用于接收被观察者的通知。 ...
    99+
    2023-10-27
    java
  • JAVA怎样实现观察者模式
    这篇文章将为大家详细讲解有关JAVA怎样实现观察者模式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概念观察者模式又叫做发布-订阅模式,是对象间的一对多的关系,当一个对象的状态发生改变时,所有依赖于它的对...
    99+
    2023-06-29
  • vue中怎么实现观察者模式
    vue中怎么实现观察者模式,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。1 响应式原理让我们先从相应式原理开始。我们可以通过O...
    99+
    2024-04-02
  • golang观察者模式怎么实现
    在Go语言中,可以使用接口和通道来实现观察者模式。首先,定义一个观察者接口,其中有一个更新方法,用于接收被观察者的通知:gotype...
    99+
    2023-10-20
    golang
  • 怎么用Javascript实现观察者模式
    本篇内容主要讲解“怎么用Javascript实现观察者模式”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么用Javascript实现观察者模式”吧!什么是观察者模式?观察者模式一种设计模式。观...
    99+
    2023-06-21
  • 怎么中JAVA项目中实现一个访问者模式
    这篇文章将为大家详细讲解有关怎么中JAVA项目中实现一个访问者模式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。访问者模式:一个作用于某对象结构中各元素的操作,使你可以在不改变各元素类数据结...
    99+
    2023-05-31
    java ava 访问者模式
  • C#中的EventHandler观察者模式怎么实现
    这篇文章主要介绍“C#中的EventHandler观察者模式怎么实现”,在日常操作中,相信很多人在C#中的EventHandler观察者模式怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”C#中的Eve...
    99+
    2023-06-29
  • JavaScript设计模式中的观察者模式怎么实现
    本文小编为大家详细介绍“JavaScript设计模式中的观察者模式怎么实现”,内容详细,步骤清晰,细节处理妥当,希望这篇“JavaScript设计模式中的观察者模式怎么实现”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知...
    99+
    2023-07-02
  • PHP设计模式之观察者模式怎么实现
    这篇文章主要介绍“PHP设计模式之观察者模式怎么实现”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“PHP设计模式之观察者模式怎么实现”文章能帮助大家解决问题。PHP观察者模式(Observer Pa...
    99+
    2023-07-05
  • Java观察者模式的实现方法是什么
    Java观察者模式的实现方法如下: 定义观察者接口(Observer):观察者接口定义了观察者对象的更新方法,通常包括一个upd...
    99+
    2023-10-23
    Java
  • 怎么在java项目中实现一个单例模式
    这篇文章将为大家详细讲解有关怎么在java项目中实现一个单例模式,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。java设计模式之单例模式定义:如果一个类始终只能创建一个实例,那么这个类被称为...
    99+
    2023-05-31
    java 单例模式 ava
  • 怎么在Java项目中实现一个策略模式
    怎么在Java项目中实现一个策略模式?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。策略模式指:策略模式指将程序中可变部分抽象分离成一系列的算法,并将每一个算法封装起来,而且...
    99+
    2023-05-31
    java ava 策略模式
  • 怎么在vue中利用组件传值实现观察者模式
    怎么在vue中利用组件传值实现观察者模式?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。第一步,我们先在main.js中注册一下busVue.prototype.$Bus&nbs...
    99+
    2023-06-15
  • golang观察者模式实现的代码怎么写
    在Go语言中实现观察者模式,可以按照以下步骤进行: 定义主题(Subject)接口,包含以下方法: type Subject i...
    99+
    2023-10-23
    golang
  • Java观察者模式之实现对象间的一对多依赖
    目录一、介绍1.1 什么是Java观察者模式?1.2 观察者模式的优缺点二、实现步骤2.1 创建被观察者类2.2 创建观察者接口和实现类2.3 在被观察者类中添加注册、移除和通知观察...
    99+
    2023-05-19
    Java观察者模式 对象间一对多依赖 Java观察者模式一对多依赖
  • Android中实现观察者模式的原理是什么
    这篇文章将为大家详细讲解有关Android中实现观察者模式的原理是什么,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。观察者模式:A类中定义一个被观察者画家package com.exampl...
    99+
    2023-05-31
    android 观察 观察者模式
  • 怎么在Java项目中实现一个工厂方法模式
    本篇文章为大家展示了怎么在Java项目中实现一个工厂方法模式,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其...
    99+
    2023-05-31
    java 工厂方法模式 ava
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作