今天我们公司封装的类中没有加上Observable观察者模式,但是很多地方需要用到Observable观察者模式

接下来就向大家介绍一下我的使用吧!

在介绍之前我们写了一个方法

 public class RefreshSender extends Observable {

     private static RefreshSender instances;

     public static RefreshSender getInstances(){
if(instances==null)
instances=new RefreshSender(); return instances;
} /**
* 发送消息
* @param type
*/
public void sendMessage(String type){
setChanged();
this.notifyObservers(type);
} }

这个方法可以注册也可以取消注册,还有一个发消息的方法

首先我使用最基本的直接使用Observable

1.发消息

在发消息的界面调Observable接口

  @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RefreshSender.getInstances().addObserver(this);
} @Override
protected void onDestroy() {
super.onDestroy();
RefreshSender.getInstances().deleteObserver(this);
}

在对应的进程中注册和取消注册

然后发消息

JSONObject object1 =new JSONObject();
object1.put("type","childrenaction");
object1.put("school",strValue);
RefreshSender.getInstances().sendMessage(object1.toJSONString());

好消息发好了,接下来接收消息了

2接收消息

同样用到Observeable就要注册和取消注册然后调Observeable这个接口

调接口大家就会发现有update这个方法,在这个方法里就可以获取到你传递的数据了

 @Override
public void update(Observable observable, Object data) {
try {
JSONObject object = JSON.parseObject(data.toString());
String type = object.getString("type");
if ("childrenmess".equals(type)) {
key = object.getString("school");
list.clear();
pageIndex = 1;
getData(false);
}
} catch (Exception e) { }
}

个人觉得这样写比较烦,个人觉得这个Observeable应该封装在BaseActivity或者BaseFragment中

比如

 public abstract class AsukaActivity extends AppCompatActivity implements Observer {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
RefreshSender.getInstances().addObserver(this);
initView();
initEvent();
}
/**
* 发消息
* @param type
* @param object
*/
public void sendObseverMsg(String type,JSONObject object){
object.put("type",type);
RefreshSender.getInstances().sendMessage(object.toJSONString());
} protected abstract void initView();
protected abstract void initEvent();
protected abstract void oberserMsg(String type, JSONObject object); @Override
public void update(Observable observable, Object data) {
try {
JSONObject object= JSON.parseObject(data.toString());
String type=object.getString("type");
oberserMsg(type,object);
}catch (Exception e){ }
} @Override
protected void onDestroy() {
super.onDestroy();
RefreshSender.getInstances().deleteObserver(this);
AsukaAndroid.app().getAppManager().finishActivity(this);
}
 protected  abstract void initView();
    protected  abstract void initEvent();
    protected  abstract void oberserMsg(String type, JSONObject object);
}

那么怎么使用呢

使用就很简单了,只要继承AsukaActivity ,发送接收就可以了

继承会有oberserMsg这个方法进行接收

 @Override
protected void oberserMsg(String type, JSONObject object) {
if ("workFlow".equals(type)) {
wfid = object.getString("wfid");
arr.clear();
pageIndex = 1;
isUpdate = false;
getData();
}

发送

sendObseverMsg("workFlow", object);

希望大家可以使用

Observable观察者模式的使用的更多相关文章

  1. JS实现Observable观察者模式

    欢迎讨论与交流 : ) 注 代码参考自——汇智网 RxJS教程 前言 Observable观察者模式令小白笔者眼前一亮.数据生产者(observable)负责生产新鲜的数据,同时在生产完毕后'通知“消 ...

  2. ExtJS要利用观察者模式 去实现自定义的事件

    // 要利用观察者模式 去实现自定义的事件 //1:由于浏览器他自己能定义内置的事件(click/blur...) // 我们也应该有一个类似于浏览器这样的类,这个类 自己去内部定义一些事件(自定义事 ...

  3. 轻量级前端MVVM框架avalon - 整体架构

    官网提供架构图 单看这个图呢,还木有说明,感觉有点蛋疼,作者的抽象度太高了,还好在前面已经大概分析过了执行流程 如图 左边是View视图,我们就理解html结构,换句话就是说用户能看到的界面,渲染页面 ...

  4. 以添加评论组件为例看angular2请求数据的处理

    在NiceFish项目中,数据请求处理并没有用Promise的那一套方法,用的是Observable(观察者模式),我将其理解成生产者和消费者模式 如下简单例子:出自(https://segmentf ...

  5. 【CuteJavaScript】Angular6入门项目(3.编写服务和引入RxJS)

    本文目录 一.项目起步 二.编写路由组件 三.编写页面组件 1.编写单一组件 2.模拟数据 3.编写主从组件 四.编写服务 1.为什么需要服务 2.编写服务 五.引入RxJS 1.关于RxJS 2.引 ...

  6. 设计模式--观察者模式初探和java Observable模式

    初步认识观察者模式 观察者模式又称为发布/订阅(Publish/Subscribe)模式,因此我们可以用报纸期刊的订阅来形象的说明: 报社方负责出版报纸. 你订阅了该报社的报纸,那么只要报社发布了新报 ...

  7. java中观察者模式Observable和Observer

    25.java中观察者模式Observable和Observer 如果想要实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口 观察者设计模式 现在很多的 ...

  8. 25、java中观察者模式Observable和Observer

    如果想要实现观察者模式,则必须依靠java.util包中提供的Observable类和Observer接口 观察者设计模式 现在很多的购房者都在关注着房子的价格变化,每当房子价格变化的时候,所有的购房 ...

  9. Java_观察者模式(Observable和Observer)

    http://blog.csdn.net/tianjf0514/article/details/7475164/ 一.观察者模式介绍 在Java中通过Observable类和Observer接口实现了 ...

随机推荐

  1. Windows下搭建基于SSH的Git服务器

    Git客户端安装 客户端要同时安装在远程服务器和自己的电脑上,下载地址:http://msysgit.github.io/ 选择安装组件 :也可以默认选择; 图标组件(Addition icons) ...

  2. angular directive 深入理解

    由于业务的需要,最近angular 的diretive 研究的比较多,有和同事一起共同协作开发scada的项目, 对directive 有了进一步更深的理解. 感觉才开始真正理解了这句话的意思: In ...

  3. ChannelHandlerContext writeAndFlush(firstMessage)

  4. Linux网络配置之虚拟网卡的配置(ubuntu 16.04)案例

    sudo vim /etc/network/interfaces 标红的名称一定要一致 sudo vim /etc/resolv.conf  配置外网的ip(默认可以不填,系统自己获取)

  5. IReferenceCounted DotNetty.Common

    // Copyright (c) Microsoft. All rights reserved. // Licensed under the MIT license. See LICENSE file ...

  6. Django——如何在Django模板中注入全局变量?——part2

    模版中的变量由context中的值来替换,如果在多个页面模版中含有相同的变量,比如:每个页面都需要{{user}},笨办法就是在每个页面的请求视图中都把user放到context中.   from d ...

  7. ubuntu挂载3T新硬盘并更换home分区

    ubuntu添加一块新的硬盘,并更换home分区 1.将硬盘接入机箱,开机,查看是否现有的硬盘信息 从这里可以看出,共有两块硬盘,分别是sda和sdb 2.执行fdisk -l,确保我们要添加的就是s ...

  8. 【Java】Java_13 分支结构

    Java中常见的两种分支结构: <1>If语句:使用布尔表达式或者布尔类型值作为分支条件来进行分支控制. <2>switch语句:对多个整形值进行匹配,从而实现分支控制. 1. ...

  9. 使用AVPlayer制作一个播放器

    代码地址如下:http://www.demodashi.com/demo/11685.html AVPlayer 是一个强大的视频播放器,可以播放多种格式的视频,缺点是没有控制界面,需要自己去实现. ...

  10. AMQP 协议介绍

    RabbitMQ 是遵从AMQP 协议的, 换句话说, RabbitMQ 就是AMQP 协议的Erlang 的实现(当然RabbitMQ 还支持STOMP2 .MQTT3 等协议) 0 AMQP 的模 ...