最近正好闲来无事,正好做完项目,由于里面用到了RxJava,有些许体会,但今天我在这儿,并不会讲RXjava,任何事情都有个循序渐进的过程,后续我会陆续讲RXJAVA并用很通俗的语言,毕竟我每次看到一些博客都有太多专业术语,导致理解起来困难.若你给出了专业术语,你也该解释下啥.废话不说了,下面我们就来讲解观察者与被观察者.

  1. Observer 观察者,说白了就是观察别人.(你这不是,废话吗!)
  2. Obserable 被观察者
  3. 注册或者订阅 说白了,就是说明 被观察者指定哪个观察者来观察自己

那我们先来看看三者的关系:
首先被观察者发生了改变,就需要告知观察者,然后观察者会做出相应的措施.二者需要联系起来就靠注册或者订阅.

具体例子借助Android里面的按钮点击事件:
首先button 是被观察者, OnClickListener是观察者, 那该button需要被哪个观察者观察呢?怎样才能联系起来呢,这就需要注册或者订阅.你是否想到了: setOnClickListener.这不是把二者联系起来了.

下面来一个具体例子,再说这个例子之前,先还要继续添加点知识点:

我们先要知道,观察者模式中主要有观察者和被观察者2个对象,而在观察模式中Observable表示被观察者,由于这个对象是一个抽象类只能被继承。而Observer表示观察者,它并不是一个类而是一个接口,所以观察者可以有多个,实现了该接口的类都属于观察者。 当然有人会问既然被观察者是一个抽象类而观察者是一个接口,那么是否有一个类即继承Observable类又实现Observer接口呢,这个自然可以,观察者当然也可以同时是被观察者,被观察者同样可以是观察者,在这里完全不冲突。

//被观察者
public class MyObservable extends Observable{
int age;
String name=”lihuan”;
String sex;

public int getAge() {
return age;
}

public void setAge(int age) {
this.age = age;
}

public String getSex() {
return sex;
}

public void setSex(String sex) {
this.sex = sex;
setChanged();
notifyObservers();
}

@Override
public String toString() {
return “age = “+age+”;”+”name = “+name+”;”+” sex = “+sex;
}
}

//观察者
public class MyObserver implements Observer {

MyObservable myObservable;@Override
public void update(Observable observable, Object data) {this.myObservable= (MyObservable) observable;System.out.println("========"+  myObservable.toString());
}

}

//主函数
public class MainActivity extends Activity {

Button button;
MyObservable myObservable;
MyObserver myObserver;
int count=0;
@Override
protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);myObservable=new MyObservable();myObserver=new MyObserver();myObservable.addObserver(myObserver);button= (Button) findViewById(R.id.my_button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {if (count==0){myObservable.setAge(24);count++;}else if (count==1){myObservable.setSex("男");count=0;}}});
}

}

Android 观察者与被观察者相关推荐

  1. android 观察者,Android开发实现简单的观察者与被观察者示例

    本文实例讲述了Android开发实现简单的观察者与被观察者.分享给大家供大家参考,具体如下: 概述: 观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它 ...

  2. android 观察者的框架,Android 架构师7 设计模式之观察者模式

    前言 当对象间存在一对多关系时,则使用观察者模式(Observer Pattern).比如,当一个对象被修改时,则会自动通知它的依赖对象.观察者模式属于行为型模式. 观察者模式.png 观察者模式 被 ...

  3. Android开源—RXJava观察者设计模式

    简介 RxJava 是一个响应式编程框架,采用观察者设计模式.所以自然少不了 Observable 和 Subscriber 这两个东东了. RxJava最核心的两个东西是Observables(被观 ...

  4. android观察者模式被观察者,Android的设计模式-观察者模式

    前言 Android的设计模式系列文章介绍,欢迎关注,持续更新中: 1.定义 定义对象间的一种一个对多的依赖关系,当一个对象的状态发送改变时,所以依赖于它的对象都得到通知并被自动更新. 2.介绍 观察 ...

  5. java观察者_Java中的观察者模式

    让一个类能够被观察,则该类需要继承java.util.Observable类. 要让一个类成为观察者,则该类需要实现java.util.Observable接口. 让观察者和被观察者建立联系通过Obs ...

  6. 设计模式-05.01-行为型-观察者模板模式

    文章目录 观察者模式[常用] Demo案例-天气预报 方案一 WeatherData CurrentConditions Client 问题分析 观察者模式方案 Subject[接口] Observe ...

  7. 观察者设计模式 Vs 事件委托(java)

    观察者设计模式 Vs 事件委托 标签: 设计模式 java 事件的委托 转载请注明原博客地址: http://blog.csdn.net/gdutxiaoxu/article/details/5182 ...

  8. 单例、观察者、代理、备忘录、工厂

    一.Singleton单例模式 Singleton单例模式是最简单的设计模式,它的主要作用是保证在程序运行生命周期中,使用了单类模式的类只能有一个实例对象存在. 1.饱汉模式,声明时就创建实例对象 [ ...

  9. java观察者设计模式

    2019独角兽企业重金招聘Python工程师标准>>> 观察者模式定义了一个一对多的依赖关系.让一个或多个观察者可以监视某一对象,当该对象的状态发生变化时,就可以通知所有的观察者,观 ...

  10. python设计模式-观察者

    定义: 定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖的对象都会得到通知并被自动更新. 观察者模式是对象的行为模式,又叫发布-订阅(pubish/subscribe)模式,模型 ...

最新文章

  1. 平流式初沉池贮砂斗计算_水处理相关计算软件大全,提高工作效率必备
  2. mysql千万级数据索引查询_mysql千万级数据量根据索引优化查询速度
  3. 上海Oracle高峰会感悟
  4. 简化Swagger使用的自制Starter:spring-boot-starter-swagger,欢迎使用和吐槽
  5. vue.js axios实现跨域http请求接口
  6. 华为P50渲染图再曝光:居中打孔直屏+徕卡四摄
  7. 《每日一剂》适配器刷新报错adapter.notifyDataSetChanged()解决
  8. OpenCV学习笔记(二十六)——小试SVM算法ml
  9. 誉赐 PC阳光板www.ycpc.icoc.cn/详尽概述
  10. SAP 独立系统的传输请求
  11. 爬虫爬取金庸小说--回顾经典小说
  12. 网页设计软件列表HTML,【网站设计用什么软件】网页设计软件具体有哪些,常见的十种网页设计软件介绍!...
  13. SQL Server数据库第二课:创建数据库表、完善数据库表的设计、建立数据库表之间的关系
  14. java poi html转PDF_实现word转pdf,HTML转pdf(探索篇)
  15. 简单粗暴理解与实现机器学习之聚类算法(四):模型评估、误差平方和SSE、“肘”方法 、轮廓系数法、CH系数
  16. ios怎么ftp上传文件到服务器,Mac OS通过 FTP工具上传文件的方法
  17. STM32:Modbus-RTU通讯协议——CRC校验
  18. python输入三门课程成绩_编一程序,从键盘输入学生的三门课程成绩,求其总成绩、平均成绩和总成绩除3的余值...
  19. PDF如何修改编辑文字?两种简单的方法分享给大家
  20. 毕业前三年如何拿到好绩效

热门文章

  1. 服务端渲染和客户端渲染
  2. cout与printf区别
  3. 信息系统安全实验(一):InterNIC、Nslookup、Sam spade、Nmap、Nessus的使用
  4. Spring Boot网上图书商城
  5. 【Cactus仙人掌图】仙人掌基础知识学习笔记
  6. 努比亚 Z5 mini刷机包 omni4.4.2修改V4.0 自用版 精简 MIUI特效
  7. python中从键盘输入的代码_Python中如何获取键盘输入
  8. Google Code Jam 2010 Qualification Round 资格赛 Problem A. Snapper Chain 问题A.按扣链条
  9. pdf转图片怎么清晰?
  10. Insert键与vs黑标