android 观察者,Android开发实现简单的观察者与被观察者示例
本文实例讲述了Android开发实现简单的观察者与被观察者。分享给大家供大家参考,具体如下:
概述:
观察者模式(又被称为发布-订阅(Publish/Subscribe)模式,属于行为型模式的一种,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态变化时,会通知所有的观察者对象,使他们能够自动更新自己。
观察者模式结构图
Subject:抽象主题(抽象被观察者),抽象主题角色把所有观察者对象保存在一个集合里,每个主题都可以有任意数量的观察者,抽象主题提供一个接口,可以增加和删除观察者对象。
ConcreteSubject:具体主题(具体被观察者),该角色将有关状态存入具体观察者对象,在具体主题的内部状态发生改变时,给所有注册过的观察者发送通知。
Observer:抽象观察者,是观察者者的抽象类,它定义了一个更新接口,使得在得到主题更改通知时更新自己。
ConcrereObserver:具体观察者,是实现抽象观察者定义的更新接口,以便在得到主题更改通知时更新自身的状态。
实现方法
1、创建接口观察者(Watcher.java):
package watch;
public interface Watcher {
void update(String str);
}
2、创建接口被观察者(Watched.java):
package watch;
public interface Watched {
void adWatcherh(Watcher watcher);
void removeWatcherh(Watcher watcher);
void notifyAll(String str);
}
3、创建观察者实现接口(ConWatcher.java):
package watch;
public class ConWatcher implements Watcher {
@Override
public void update(String str) {
System.out.println(str);
}
}
4、创建被观察者实现接口(ConWatched.java):
package watch;
import java.util.ArrayList;
import java.util.List;
public class ConWatched implements Watched {
List list = new ArrayList();
@Override
public void adWatcherh(Watcher watcher) {
list.add(watcher);
}
@Override
public void removeWatcherh(Watcher watcher) {
list.remove(watcher);
}
@Override
public void notifyAll(String str) {
for (Watcher watcher : list){
watcher.update(str);
}
}
}
5、测试(WatchTest.java):
package watch;
public class WatchTest {
public static void main(String[] args) throws Exception{
ConWatched conWatched = new ConWatched();
ConWatcher conWatcher1 = new ConWatcher();
ConWatcher conWatcher2 = new ConWatcher();
ConWatcher conWatcher3 = new ConWatcher();
System.out.println("脚本之家测试结果:");
conWatched.adWatcherh(conWatcher1);
conWatched.adWatcherh(conWatcher2);
conWatched.adWatcherh(conWatcher3);
conWatched.notifyAll("I am coming");
}
}
文件目录结构:
运行结果:
希望本文所述对大家Android程序设计有所帮助。
android 观察者,Android开发实现简单的观察者与被观察者示例相关推荐
- android+Unity3D游戏开发之简单的物体运动
android+Unity3D游戏开发之简单的物体运动 其实这篇也是转载的,真的感觉对于我们初学者来说很不错的,不信你看看嘛;原创链接:http://bbs.9ria.com/thread-98192 ...
- Android监听作用,Android开发之CheckBox的简单使用与监听功能示例
本文实例讲述了Android开发之CheckBox的简单使用与监听功能.分享给大家供大家参考,具体如下: activity_main.xml android:layout_width="ma ...
- Android小游戏开发:简单的合金弹头游戏(一)游戏框架
本篇博客适合给初学安卓,熟悉基本的JAVA语法,并希望用安卓写个小游戏的初学者参考,因为博主也因大学课程需要,是在2个星期内自学的JAVA和安卓开发,可能会有一些错误和需要优化的地方,望指出 我在这2 ...
- Android之NDK开发的简单实例
NDK全称为Native Development Kit,是本地开发工具集.在Android开发中,有时为了能更好的重用以前的C/C++的代码,需要将这些代码编译成相应的so,然后通地JNI以供上层J ...
- Android移动应用开发学习——简单实现视频新闻APP
1.登录页 2.新闻列表页--小屏大屏切换 3.视频播放页 登录页 视频列表页 小屏显示视频标题 大屏左侧显示视频标题,右侧显示视频播放 视频播放页 核心代码
- Android 音视频开发之基础篇 使用 imageview绘制一张图片
Android 音视频开发 任务一 ImageView 绘制图片 文章目录 Android 音视频开发 任务一 ImageView 绘制图片 前言 一.配置activity_main.xml 二.添加 ...
- android观察者模式被观察者,Android的设计模式-观察者模式
前言 Android的设计模式系列文章介绍,欢迎关注,持续更新中: 1.定义 定义对象间的一种一个对多的依赖关系,当一个对象的状态发送改变时,所以依赖于它的对象都得到通知并被自动更新. 2.介绍 观察 ...
- Android开发环境简单配置
为什么80%的码农都做不了架构师?>>> · Android开发环境简单配置 写这个系列的原因也是因为自己对android比较感兴趣,而网上多数教程都是直接参照 ...
- 文件管理器android实现,Android开发之简单文件管理器实现方法
易采站长站为您分析Android开发之简单文件管理器实现方法,简单实现了Android的文件目录查看,文件重命名,打开,删除等功能,需要的朋友可以参考下 本文实例讲述了Android开发之简单文件管理 ...
最新文章
- Ubuntu 14.04 64bit安装IPython
- valgrind——Callgrind检测程序代码的运行时间和调用过程,程序分析性能。
- java 判断exception类型_Checked Exception | Java语言设计者的失误?
- 微信公众号Java开发-笔记02【开发接入准备、开发接入】
- 自动,MySQL触发器,完整详细可收藏
- Linux下出现ping:unknown host xxx.xxx问题的解决办法
- MySQL入门之视图
- Java 蓝桥杯 装箱问题
- html与表格无关的标记,表格和HTML5标记
- k8s与caas--容器云caas平台的落地实践
- 3,ActiveMQ-入门(基于JMS发布订阅模型)
- 计算机维护工作周报,运维周报怎么写呀,这一周没什么事做
- json.stringify php,json.stringify()方法如何使用
- win下编译TNN安卓库(静态或者动态) + android studio ndk调用
- APS先进规划与生产排程系统--介绍
- jvm精通之柳暗花明
- timeout参数使用,转贴
- hibernate lazy属性参数说明
- VMware设置虚拟机连接内外网
- Unity 3D PC平台发布|| Unity 3D Web 平台发布||Unity 3D Android平台发布
热门文章
- SugarCRM 在Html中增加超连接按钮
- .net 内嵌 GeckoWebBrowser (firefox) 核心浏览器
- 微信公众号 JSSDK 提示:invalid signature
- springMvc的一些简介 和基于xml的handlerMapping基本流程
- 走向DBA[MSSQL篇] - 从SQL语句的角度提高数据库的访问性能
- php json和数组,php数组和json数组之间的互相转化
- 写1行代码影响1000000000人,这是个什么项目?
- 浅谈Nginx负载均衡与F5(硬件)的区别
- 比较正宗的验证邮箱的正则表达式js代码详解
- PHP的composer报错 failed loading cafile stream: `C:\Users\Administrator\Ap pData\Local\Temp\opeB1C9.t