登山则情满于山,观海则意溢于海。这篇文章主要讲述Android 架构设计实现——MVP模式相关的知识,希望能为你提供帮助。
观察者模式是一种使用频率非常高的模式,
有时也被称作发布/订阅模式,
属于行为型模式,
它最常用的是 GUI 系统、发布/订阅系统,
它一个重要作用就是解耦,
使得它们之间的依赖性更小。观察者模式定义了对象间一种一对多的依赖关系,
使得每当一个对象改变状态时,
则所有依赖于它的对象都会得到通知并被自动更新。
观察者模式的使用情景:
- 关联行为场景;
- 事件多级触发场景;
- 跨系统的消息交换场景( 如消息队列、事件总线的处理机制) ;
观察者模式 | |
---|---|
优点 | 1、观察者和被观察者之间是耦合抽象,
应对业务变化;
2、增强了系统灵活性、可扩展性; |
缺点 | 1、开发调试变的比较复杂, java中消息的通知是顺序执行, 一个消息的卡顿会影响整体的执行效率, 所以使用观察者模式还需要结合异步操作的方式; |
文章图片
Subject 表示抽象主题, 是被观察( Observable) 的角色, ConcreteSubject 表示具体主题, Observer 表示抽象观察者, ConcreteObserver 表示具体的观察者。
1.代码实现 观察者 Observer 和被观察者 Observable 是 JDK 中的内置类型。
1、创建观察者:
public class MyObserver implements Observer {
private String name;
public MyObserver(String name) {
this.name =
name;
}
@
Override
public void update(Observable o, Object arg) {
System.out.println(name +
"
, update:"
+
arg);
}
}
2、创建被观察者:
public class MyObservable extends Observable {
public void postNewPublication(String content) {
// 标识状态或者内容发生改变
setChanged();
// 通知所有观察者
notifyObservers(content);
}
}
测试代码:
@
Test
public void test() throws Exception {
// 被观察者
MyObservable observable =
new MyObservable();
// 观察者
MyObserver observer1 =
new MyObserver("
test1"
);
MyObserver observer2 =
new MyObserver("
test2"
);
MyObserver observer3 =
new MyObserver("
test3"
);
MyObserver observer4 =
new MyObserver("
test4"
);
// 将观察者注册到被观察者对象的观察者列表中
observable.addObserver(observer1);
observable.addObserver(observer2);
observable.addObserver(observer3);
observable.addObserver(observer4);
// 发布消息
observable.postNewPublication("
new"
);
}
【Android 架构设计实现——MVP模式】输出结果:
test4, update:new
test3, update:new
test2, update:new
test1, update:new
可以看到所有订阅了被观察者的观察者都接收到了更新消息, 一对多的订阅——发布系统就完成了。
推荐阅读
- Android自定义组合控件--图片加文字,类似视频播放软件的列表
- Android SDK安装时出错“android Failed to rename directory”的解决方法
- 如何从Weebly迁移到WordPress(分步迁移指南)
- 图像SEO分步指南(如何优化你的网站上的图像())
- 如何使用Polylang实现WordPress多语言(分步教程)
- 如何从WordPress.com迁移到自托管WordPress(终极迁移指南)
- 如何使用BackWPup插件备份WordPress网站(综合指南)
- 如何从Blogger迁移到WordPress(综合站点迁移指南)
- 如何从Drupal迁移到WordPress(站点迁移分步指南)