Android设计模式系列--观察者模式(1)

Android 设计模式学习(二)观察者模式应用实例 前言 最近在遇到了 Android 的开发中常用到的设计模式之观察者模式,观察者模式,所谓的模式就是一种设计思想,可以按照某种模式,写出更合理,简单,有效的代码。可以用在 Android 开发中,也可以用在 Java,C#等等开发中,就类似单例模式,代理模式,模版等等。 观察者模式在实际项目中使用的也是非常频繁的,它最常用的地方是 GUI 系统、订阅——发布系统等。因为这个模式的一个重要作用就是解耦,使得它们之间的依赖性更小,甚至做到毫无依赖。以 GUI 系统来说,应用的 UI 具有易变性,尤其是前期随着业 阅读详情

protected void onChange(boolean selfChange) {

synchronized (mSelfObserverLock) {

mContentObservable.dispatchChange(selfChange);

if (mNotifyUri != null && selfChange) {

mContentResolver.notifyChange(mNotifyUri, mSelfObserver);

}

}

}

protected void notifyDataSetChange() {

mDataSetObservable.notifyChanged();

}

}

再看看Observable类和DataSetObservable类:

public abstract class Observable {

/**

  • 观察者列表

*/

protected final ArrayList mObservers = new ArrayList();

public void registerObserver(T observer) {

if (observer == null) {

throw new IllegalArgumentException(“The observer is null.”);

}

synchronized(mObservers) {

if (mObservers.contains(observer)) {

throw new IllegalStateException(“Observer " + observer + " is already registered.”);

}

mObservers.add(observer);

}

}

public void unregisterObserver(T observer) {

if (observer == null) {

throw new IllegalArgumentException(“The observer is null.”);

}

synchronized(mObservers) {

int index = mObservers.indexOf(observer);

if (index == -1) {

throw new IllegalStateException(“Observer " + observer + " was not registered.”);

}

mObservers.remove(index);

}

}

public void unregisterAll() {

synchronized(mObservers) {

mObservers.clear();

}

}

}

和

public class DataSetObservable extends Observable {

/**

  • 数据发生变化时,通知所有的观察者

*/

public void notifyChanged() {

synchronized(mObservers) {

for (DataSetObserver observer : mObservers) {

observer.onChanged();

}

}

}

//… … (其他方法)

}

观察者DataSetObserver类是一个抽象类:

public abstract class DataSetObserver {

public void onChanged() {

// Do nothing

}

}

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

最后相关架构及资料领取方式:

点击我的GitHub免费领取获取往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。

相关架构及资料领取方式:

点击我的GitHub免费领取获取往期Android高级架构资料、源码、笔记、视频。高级UI、性能优化、架构师课程、NDK、混合式开发(ReactNative+Weex)微信小程序、Flutter全方面的Android进阶实践技术,群内还有技术大牛一起讨论交流解决问题。

Android源码设计模式探索与实战【观察者模式】 IT行业,一直讲一句话,拼到最后都拼的是“内功”,而内功往往就是指我们处理问题的思路、经验、想法,而对于开发者来说,甚至对于产品也一样,都离不开一个“宝典”,就是设计模式。今天我们一起借助Android源码去探索一下观察者模式的优缺点,以及它所想要去解决的问题。同时结合我工作经验中的一个小例子,来总结实践一下。 1.背景&定义 理解: 观察者模式是行为型设计模式的一种。首先我们理解一下这个名词,有观察者,那么肯定相对就有被观察者,观察的目的是什么,那肯定是被观察者“有所变化的时候”,观察者可以‘. 阅读详情

相关推荐

Android观察者模式应用详解

设计模式不仅是一套解决方案,更是软件开发中智慧的结晶,它帮助开发者遵循既定的模板构建软件结构,从而解决特定的问题。设计模式是软件工程领域内,针对特定问题的一般性可重用解决方案。它们是设计经验的总结,为解决特定问题提供了经过验证的方案和最佳实践。设计模式是软件开发中解决特定问题的一般性经验的总结。它们是被反复使用、多数人知晓、经过分类编目、代码设计经验的集合。每一种设计模式都是为了解决某一类特定的问题而设计的,它描述了一个在我们周围不断重复发生的问题以及该问题的解决方案的核心。

weixin_42608299的博客 899

安卓设计模式应用总结

####1.建造者模式建造者模式顾名思义,类似一个大楼都是按照一砖一瓦建造完成, 他通常结合链式调用一起使用该模式Android 比较热门的第三方框架均有使用举例:Rxjava, Retrofit, Okhttp, Geendao, 等等#####2.观察者模式观察者模式是一种行为模式,定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。

weixin_38504171的博客 1557

数据结构实验1 集合的交、并、差

姓名:Far_Rainbow 学号: 202505000X 专业: 软件工程 年级:2020级 实验名称:实验1 集合的交、并、差 实验内容: (1)实验目的 通过该实验,让学生复习巩固C语言中的循环结构、循环控制条件、分支结构和数组/链表、函数的调用等有关内容,体会到用数组存储集合时,需要记录集合元素的个数,否则输出结果会出现数据越界现象。 (2)实验内容 通过键盘,分别输入两个数据元素类型为正整数的集合A和B,以负数输入为结束条件,输出两个集合的交、并、差。 (3)实验要求 从程序完善性上考虑,集合元

Far_Rainbow的博客 2177

设计模式-观察者模式

观察者模式,是一种非常常见的设计模式,在很多系统中随处可见,尤其是涉及到数据状态发生变化需要通知的情况下。本文以AbstractCursor为例子,展开分析。观察者模式,Observer Pattern,是一个很实用的模式,本人曾经接触到的各种平台以及曾经参与项目中打印模板解释器中都用到了此模式。 1.意图定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知...

weixin_34268843的博客 285

【CODESYS】-软件Bug与处理方法(20240710更)

【CODESYS】-软件Bug与处理方法(不定期更新)

qq_35316470的博客 5186

5G NR 双连接与载波聚合:PCell、SCell、PScell、SpCell 角色全解析

本文全面解析了5G NR中双连接与载波聚合技术的关键概念,详细介绍了PCell、SCell、PScell和SpCell的角色与功能。通过实际案例和配置示例,帮助读者理解这些小区在提升网络覆盖和速率方面的作用,以及在实际组网中的优化策略。

weixin_33220360的博客 375

Android 设计模式之观察者模式

目录 1. 介绍 1.1 定义 1.2 作用 1.3 优缺点 2. 实践案例Demo 2.1 利用Java内置的Observer/Observable 2.1.1 实现方式 2.2 自定义观察者/被观察者 2.2.1 具体实现方式 3.Android中包含观察者模式的组件源代码解析 3.1 ListView中观察者模式解析 4. 观察者模式与发布者/订阅者模式的区别 1...

jerechen的博客 1084

Ultrascale/Ultrascale+ FPGA GTH IP及结构详解(一)

FPGA GTH Transceiver

houzi6320的博客 1万+

设计模式之ObserverPattern观察者模式

现实世界中,许多对象并不是独立存在的,其中一个对象的行为发生改变可能会导致一个或者多个其他对象的行为也发生改变。例如,某种商品的物价上涨时会导致部分商家高兴,而消费者伤心;还有,当我们开车到交叉路口时,遇到红灯会停,遇到绿灯会行。 在软件世界也是这样,例如,Excel 中的数据与折线图、饼状图、柱状图之间的关系;MVC 模式中的模型与视图的关系。所有这些,如果用观察者模式来实现就非常方便。 观察者Observer模式的特点和定义: 观察者(Observer)模式的定义:指多个对象间存在一对多的依赖关系,当一

haoyuegongzi的博客 326

YOLOv8目标出入计数部署:讲解C#使用ONNX检测模型进行目标出入计数 可运行完整实例

代码、步骤、讲解完整,可一键运行,效果如下:车辆出入计数人员出入计数。

Limiiiing的博客 79

三维重建/SLAM笔记_最佳学习路线/攻略

本文目的 学习三维重建,需要不少知识,而知识之间又存在不同的依赖关系,为了后来人能少走弯路,也为了对自己的知识框架系统总结,特记录自己的学习路线。 学习心得 关于读书,了解基础知识是一方面,产生疑问也是一方面,为以后知道学习什么留下印象; 一回生,二回熟,看不懂时,大多是因为先验知识不够,没关系,多查多想,总会搞懂的。 学习路线 1.计算机图形学基础(OpenGL基础版)(徐文鹏 清...

惊鸿一博 3291

Android设计模式——观察者模式

Android设计模式——适配器模式1.适配器模式定义2.适配器模式分类2.1 类适配模式2.2 对象适配模式 (常用)3.Android源码中适配器模式4.总结: 1.适配器模式定义   适配器就是把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。说白了适配器模式就是将某个对象适配成我们需要的对象。 2.适配器模式分类 2.1 类适配模式...

weixin_45468727的博客 340

节省人力成本40%!仓储物流AI机器人调度系统实战案例(含路径规划算法与系统架构图)

首先,我们需要定义一个Node类self.x = x # 节点x坐标self.y = y # 节点y坐标self.g = g # 从起点到当前节点的实际成本(g值)self.h = h # 从当前节点到终点的启发式成本(h值)self.f = g + h # 总成本(f值)self.parent = None # 父节点(用于回溯路径)self.task_id = task_id # 任务IDself.priority = priority # 任务优先级(1=最高,5=最低)

小程序开发 950

Android的设计模式-观察者模式

前言Android的设计模式系列文章介绍,欢迎关注,持续更新中:1.定义定义对象间的一种一个对多的依赖关系,当一个对象的状态发送改变时,所以依赖于它的对象都得到通知并被自动更新。2.介绍 观察者属于行为型模式。 观察者模式又被称作发布/订阅模式。 观察者模式主要用来解耦,将被观察者和观察者解耦,让他们之间没有没有依赖或者依赖关系很小。 3.UML类图角色说明: Subject(抽象主题):又叫抽象被

四月葡萄的博客 632

059、肤色还原专项调优:记忆色、颜色偏好建模与主观评价标准

文章摘要:肤色还原调优的技术挑战与实践经验 本文系统探讨了手机影像中肤色还原的技术难点与解决方案。通过实际案例揭示了肤色还原的本质是记忆色与颜色偏好的博弈,而非单纯的技术指标达标。文章详细分析了记忆色的三大特性(高饱和、地域差异、场景依赖)和颜色偏好的数学建模方法,提出了基于YCbCr/Lab空间的参数化模型和代价函数设计。在评价体系方面,强调主观评价的重要性,并分享了专家评审、用户调研、场景覆盖的三级验证方法。最后总结了实战中的关键经验,包括肤色检测优化、过渡处理、动态范围管理及视频/拍照差异策略。文章指

sundong_81的博客 250

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Android 设计模式 之 观察者模式

/* * 观察者模式 * 定义对象间的一种一个(Subject)对多(Observer)的依赖关系,当一个对象的状态发送改变时,所以依赖于它的 * 对象都得到通知并被自动更新 * * 当然,MVC只是Observer模式的一个实例。Observer模式要解决的问题为: * 建立一个一(Subject)对多(Observer)的依赖关系,并且做到当“一”变化的时候, * 依赖这个

fangchongbory的专栏 3万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

Android设计模式之观察者模式与典型应用

Android开发中广泛使用观察者模式实现对象间的一对多依赖关系,当被观察者状态变化时自动通知所有观察者。该模式包含被观察者、观察者、具体被观察者和具体观察者四个核心角色。Android提供了原生Observable/Observer实现,也存在于ListView适配器、广播接收等框架组件中。开发者可自定义实现,但需注意内存泄漏、线程安全和按需通知等问题。观察者模式能有效解耦对象,但过多观察者可能影响性能。Kotlin中更推荐通过自定义接口灵活实现该模式。

分享技术和日常 1064

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

android 中观察者模式,谈谈Android中的观察者模式

谈谈Android中的观察者模式App研发组 匡仁锦一、设计模式概念回顾二、观察者模式概述三、Android源码中观察者模式代码四、观察者模式最佳实践五、小结一、设计模式概念回顾1.为什么引入设计模式?Why?2.面向对象设计六大原则回顾 二、观察者模式概述1.观察者模式定义:又称为发布者/订阅者模式“Define a one-to-many dependency between objec...

weixin_39682940的博客 433

Android设计模式-观察者模式

Android设计模式-观察者模式 1.定义 定义对象间的一种一个对多的依赖关系,当一个对象的状态发送改变时,所以依赖于它的对象都得到通知并被自动更新。 2.介绍 观察者属于行为型模式。 观察者模式又被称作发布/订阅模式。 观察者模式主要用来解耦,将被观察者和观察者解耦,让他们之间没有没有依赖或者依赖关系很小。 3. UML类图 图片来源也是某个大佬画的,这边只是做个搬运 角色说明: Subject(抽象主题):又叫抽象被观察者,把所有观察者对象的引用保存到一个集合里,每个主题都可以有任何数量的观察

qq_43203586的博客 219

Android源码分析:Android中的设计模式——观察者模式

Android源码分析:Android中的设计模式——观察者模式转载请注明出处:http://blog.youkuaiyun.com/qq_1050087728/article/details/69663729题记Android源码中有很多经典的设计模式,本文重点讨论Android源码中的观察者模式。在开发中经常会用到的MVC(Model-View-Controller)框架设计模式就是观察者模式的一个实例。当

ZhengXiaohu的博客 749

Android 中的设计模式之观察者模式

观察者模式是我们开发工作中经常使用的开发模式。Android 源码中也有很多地方用到此模式。比如:ListView、ContentProvider 和 Broadcast 等等。本文将会介绍观察者模式、实现一个观察者模式并结合 Android 源码进行分析。定义对象间的一种一个对多的依赖关系,当一个对象的状态发送改变时,所以依赖于它的对象都得到通知并被自动更新。观察者模式又被称作发布/订阅模式。即 1 人发布,N 人订阅。

金戈鐡馬 1217

Android设计模式源码解析之ListView观察者模式

深入分析观察者模式以及观察者模式在Andriod中的运用。本文来自SAOS开源项目组。

Mr.Simple的专栏 1万+

Android Visualizer 实战:把声音画出来

是系统提供的音频效果(AudioEffect)之一。它挂在音频链路上,,把数据回吐给你——画波形、画频谱、做响度表。

Android的专栏 273
上一篇: Jsoup解析html,如何才能更容易拿到大厂Offer,retrofit解析
下一篇: LeetCode刷题笔记-数据结构-day17
普通网友
博客等级 码龄6年 3799粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值