返回顶部
首页 > 资讯 > 移动开发 >android开发中使用java观察者模式
  • 243
分享到

android开发中使用java观察者模式

用javaJAVAandroid开发Android 2022-06-06 10:06:56 243人浏览 泡泡鱼
摘要

代码如下://观察者,需要用到观察者模式的类需实现此接口public interface Observer { void update(Object... objs

代码如下:
//观察者,需要用到观察者模式的类需实现此接口
public interface Observer {
 void update(Object... objs);
}

//被观察者(一个抽象类,方便扩展)
public abstract class Observable {
 public final ArrayList<Class<?>> obserList = new ArrayList<Class<?>>();
 
 public <T> void reGISterObserver(T ob) {
  if (ob == null) throw new NullPointerException();
  this.registerObserver(ob.getClass());
 }

 
 public void registerObserver(Class<?> cls) {
  if (cls == null) throw new NullPointerException();
  synchronized(obserList) {
   if (!obserList.contains(cls)) {
    obserList.add(cls);
   }
  }
 }
 
 public <T> void unRegisterObserver(T ob) {
  if (ob == null) throw new NullPointerException();
  this.unRegisterObserver(ob.getClass());
 }
 
 public void unRegisterObserver(Class<?> cls) {
  if(cls == null) throw new NullPointerException();
  synchronized(obserList){
   Iterator<Class<?>> iterator = obserList.iterator();
   while(iterator.hasNext()) {
    if(iterator.next().getName().equals(cls.getName())){
     iterator.remove();
     break;
    }
   }
  }
 }
 
 public void unRegisterAll() {
  synchronized(obserList) {
   obserList.clear();
  }
 }
 
 public int countObservers() {
  synchronized(obserList) {
   return obserList.size();
  }
 }
 
 public abstract void notifyObservers(Object... objs);
 
 public abstract void notifyObserver(Class<?> cls, Object... objs);
 
 public abstract <T> void notifyObserver(T t, Object... objs);
}

//目标被观察者
public class ConcreteObservable extends Observable {

 private static ConcreteObservable instance = null;
 private ConcreteObservable() {}
 public static synchronized ConcreteObservable getInstance() {
  if (instance == null) {
   instance = new ConcreteObservable();
  }
  return instance;
 }
 @Override
 public <T> void notifyObserver(T t, Object... objs) {
  // TODO Auto-generated method stub
  if (t == null) throw new NullPointerException();
  this.notifyObserver(t.getClass(), objs);
 }

 @Override
 public void notifyObservers(Object... objs) {
  // TODO Auto-generated method stub
  for (Class<?> cls : obserList) {
   this.notifyObserver(cls, objs);
  }
 }


 @Override  //通过java反射机制实现调用
 public void notifyObserver(Class<?> cls, Object... objs) {
  // TODO Auto-generated method stub
  if (cls == null) throw new NullPointerException();
  Method[] methods = cls.getDeclaredMethods();
  for (Method method : methods) {
   if (method.getName().equals("update")) {
    try {
     method.invoke(cls, objs);
                                        break;
    } catch (IllegalArgumentException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    } catch (IllegalAccessException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    } catch (InvocationTargetException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
   }
  }
 }
}

//使用 (实现Observer接口)
public class Text extends Activity implements Observer {
   public void onCreate(...) {
       ConcreteObservable.getInstance().registerObserver(Text.class);
       ....
   }

   //实现接口处理
   public void update(Object... objs) {
       // 做操作,比如更新数据,更新UI等
   }
}

您可能感兴趣的文章:Java中的观察者模式实例讲解使用Java8实现观察者模式的方法(上)java观察者模式实现和java观察者模式演化实例解析观察者模式及其在Java设计模式开发中的运用Java观察者模式例子使用 Java8 实现观察者模式的方法(下)Java设计模式之观察者模式(Observer模式)介绍用Java设计模式中的观察者模式开发微信公众号的例子全面解析Java8观察者模式23种设计模式(13)java观察者模式


--结束END--

本文标题: android开发中使用java观察者模式

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

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

猜你喜欢
  • android开发中使用java观察者模式
    代码如下://观察者,需要用到观察者模式的类需实现此接口public interface Observer { void update(Object... objs...
    99+
    2022-06-06
    用java JAVA android开发 Android
  • Java设计模式中的观察者模式
    目录一.介绍二.场景约束三.UML类图四.示意代码(版本一)五.示意代码(版本二)六.观察者模式与发布订阅模式七.优点八.在JDK中的典型应用一.介绍 观察者模式(Observer ...
    99+
    2023-02-16
    Java观察者模式 Java设计模式
  • 详解Java中的观察者模式
    详解Java中的观察者模式?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。定义:定义对象间一种一对多的依赖关系,使得当每一个对象改变状态,则所有依赖于它的对象都会得到通知并自动更...
    99+
    2023-05-31
    java 观察 观察者模式
  • Java观察者模式有什么用
    这篇文章主要为大家展示了“Java观察者模式有什么用”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“Java观察者模式有什么用”这篇文章吧。一、观察者模式的定义和特点观察者模式的定义:指多个对象间...
    99+
    2023-06-22
  • Java设计模式之观察者模式
    目录一、观察者模式的定义和特点二、观察者模式的结构三、代码实例代码示例总结 一、观察者模式的定义和特点 观察者模式的定义: 指多个对象间存在一对多的依赖关系,当一个对象的状态发生改...
    99+
    2024-04-02
  • java观察者模式是什么
    本篇内容介绍了“java观察者模式是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!观察者模式① 观察者模式的概念观察者模式(Observ...
    99+
    2023-06-19
  • Android观察者模式实例分析
    本文实例讲述了Android观察者模式。分享给大家供大家参考。具体分析如下: 一、环境: 主机:WIN8 开发环境:Eclipse 二、说明: 1.打开sd卡中的xml文件,如...
    99+
    2022-06-06
    Android
  • java的观察者模式是什么
    这篇文章主要讲解了“java的观察者模式是什么”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“java的观察者模式是什么”吧!消息队列(MQ),一种能实现生产...
    99+
    2024-04-02
  • JAVA怎样实现观察者模式
    这篇文章将为大家详细讲解有关JAVA怎样实现观察者模式,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。概念观察者模式又叫做发布-订阅模式,是对象间的一对多的关系,当一个对象的状态发生改变时,所有依赖于它的对...
    99+
    2023-06-29
  • Java观察者模式实例分析
    这篇文章主要讲解了“Java观察者模式实例分析”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Java观察者模式实例分析”吧!使用场景观察者模式所做的工作其实就是在解耦,让耦合的双方都依赖于抽...
    99+
    2023-06-27
  • java观察者模式怎么实现
    要实现观察者模式,你可以按照以下步骤进行: 定义观察者接口(Observer):该接口应该包含一个方法,用于接收被观察者的通知。 ...
    99+
    2023-10-27
    java
  • Java设计模式之观察者模式(Observer模式)
    目录一、观察者模式是什么?二、模式分析2.1 四个角色2.2 案例三、观察者模式的优缺点四、总结一、观察者模式是什么? 当对象间存在一对多关系时,则使用观察者模式(Observer ...
    99+
    2024-04-02
  • Java设计模式之java观察者模式详解
    目录引言介绍角色原理类图微信订阅号的案例总结优点缺点适用场景观察者模式的典型应用JDK 提供的观察者接口Guava EventBus 中的观察者模式Spring Applicatio...
    99+
    2024-04-02
  • Java设计模式中的观察者模式怎样的
    今天就跟大家聊聊有关Java设计模式中的观察者模式怎样的,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、观察者模式的定义和特点观察者模式的定义:指多个对象间存在一对多的依赖关系,当...
    99+
    2023-06-22
  • JavaScript设计模式中的观察者模式
    目录观察者设计模式初始数据被观察者观察者观察者设计模式 观察者设计模式中分为被观察者和观察者,当被观察者触发了某个边界条件,观察者就会触发事件,这里需要俩个构造函数进行观察者设计模式...
    99+
    2024-04-02
  • java和Spring中观察者模式的应用详解
    目录一、观察者模式基本概况1.概念2.作用3.实现方式二、java实现两种观察者模式1.Observer接口和Observable类2.EventObject和EventListen...
    99+
    2024-04-02
  • Java中常用的设计模式之观察者模式详解
    目录优点缺点使用场景注意事项一、实现方式1、观察者抽象类2、第一个观察者3、第二个观察者4、第三个观察者5、定义主题二、测试总结优点 1.观察者和被观察者是抽象耦合的。 2.建立一套...
    99+
    2024-04-02
  • web开发中发布订阅模式与观察者模式的示例分析
    这篇文章主要为大家展示了“web开发中发布订阅模式与观察者模式的示例分析”,内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下“web开发中发布订阅模式与观察者模式的示例...
    99+
    2024-04-02
  • Java观察者模式的深入了解
    目录一、观察者模式的定义和特点二、观察者模式的结构三、代码实例代码示例总结一、观察者模式的定义和特点 观察者模式的定义: 指多个对象间存在一对多的依赖关系,当一个对象的状态发生改变时...
    99+
    2024-04-02
  • Java编程中的观察者模式是什么
    这篇文章主要介绍“Java编程中的观察者模式是什么”,在日常操作中,相信很多人在Java编程中的观察者模式是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Java编程中的观察者模式是什么”的疑惑有所帮助!...
    99+
    2023-05-30
    java
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作