观察者模式实践:Android中的Observer模式解析
5星 · 超过95%的资源 需积分: 0 39 浏览量
更新于2024-09-15
收藏 71KB DOC 举报
"Android Observer 观察者模式 案例详解"
观察者模式(Observer Pattern)是设计模式中的一种重要模式,尤其在Android开发中,它扮演着关键角色,用于实现对象之间的松耦合。通过这个模式,一个对象(被观察者)的状态变化可以自动通知到其他依赖于它的对象(观察者)。这种模式在事件驱动编程中尤为常见,比如用户界面的交互处理。
在Android中,观察者模式主要体现在`java.util.Observable`和`java.util.Observer`这两个类上,但这里的案例是自定义实现,以更好地理解观察者模式的核心思想。
案例详解:
1. 抽象观察者(Abstract Watcher):这是观察者接口,定义了观察者需要实现的行为,即当被观察者状态改变时,如何接收更新信息。在案例中,定义了一个`updateNotify(Content content)`方法,当接收到内容更新时,观察者会根据接收到的`Content`对象进行相应操作。
```java
public interface Watcher {
public void updateNotify(Content content);
}
```
2. 抽象被观察者(Abstract Watched):这是被观察者的接口,定义了如何添加、移除观察者以及如何通知所有观察者。这里包含`add(Watcher watcher)`、`remove(Watcher watcher)`和`notifyWatcher(Content content)`方法。
```java
public interface Watched {
public void add(Watcher watcher);
public void remove(Watcher watcher);
public void notifyWatcher(Content content);
}
```
3. 具体观察者(Concrete Watcher):实现了`Watcher`接口,当接收到`Content`对象更新时,具体实现`updateNotify(Content content)`方法,例如打印出`Content`对象的`id`、`name`和`address`。
```java
public class ConcreteWatcher implements Watcher {
public void updateNotify(Content content) {
int id = content.getId();
String name = content.getName();
String address = content.getAddress();
System.out.println("id:" + id + "/nname:" + name + "/naddress:" + address);
}
}
```
4. 具体被观察者(Concrete Watched):实现了`Watched`接口,维护了一个`List<Watcher>`来存储所有的观察者,并实现了添加、删除观察者的方法。当需要通知所有观察者时,遍历列表并调用每个观察者的`updateNotify()`方法。
```java
public class ConcreteWatched implements Watched {
private List<Watcher> list = new ArrayList<Watcher>();
public void add(Watcher watcher) {
list.add(watcher);
}
public void remove(Watcher watcher) {
// 移除观察者逻辑
}
public void notifyWatcher(Content content) {
for (Watcher watcher : list) {
watcher.updateNotify(content);
}
}
}
```
在实际应用中,被观察者(如一个数据模型)的状态改变时,会调用`notifyWatcher()`方法,将更新的信息传递给所有注册的观察者,观察者(如UI组件)则根据这些信息更新自己的显示。这种模式使得系统能够灵活地扩展,因为被观察者与观察者之间没有直接的依赖关系,只需遵循接口约定即可。
在Android开发中,观察者模式常用于Activity与Fragment之间的通信、BroadcastReceiver的注册与接收、事件总线(如EventBus)的实现等场景。理解并熟练运用观察者模式,能帮助开发者构建更加健壮和可维护的代码结构。
2021-11-23 上传
2017-06-29 上传
2018-08-29 上传
点击了解资源详情
点击了解资源详情
点击了解资源详情
2016-11-16 上传
2019-05-23 上传
2021-05-16 上传
嗨皮
- 粉丝: 121
- 资源: 14
最新资源
- Android圆角进度条控件的设计与应用
- mui框架实现带侧边栏的响应式布局
- Android仿知乎横线直线进度条实现教程
- SSM选课系统实现:Spring+SpringMVC+MyBatis源码剖析
- 使用JavaScript开发的流星待办事项应用
- Google Code Jam 2015竞赛回顾与Java编程实践
- Angular 2与NW.js集成:通过Webpack和Gulp构建环境详解
- OneDayTripPlanner:数字化城市旅游活动规划助手
- TinySTM 轻量级原子操作库的详细介绍与安装指南
- 模拟PHP序列化:JavaScript实现序列化与反序列化技术
- ***进销存系统全面功能介绍与开发指南
- 掌握Clojure命名空间的正确重新加载技巧
- 免费获取VMD模态分解Matlab源代码与案例数据
- BuglyEasyToUnity最新更新优化:简化Unity开发者接入流程
- Android学生俱乐部项目任务2解析与实践
- 掌握Elixir语言构建高效分布式网络爬虫