Android 架构设计实现——MVP模式
Posted 一叶知秋V
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 架构设计实现——MVP模式相关的知识,希望对你有一定的参考价值。
观察者模式是一种使用频率非常高的模式,有时也被称作发布/订阅模式,属于行为型模式,它最常用的是 GUI 系统、发布/订阅系统,它一个重要作用就是解耦,使得它们之间的依赖性更小。观察者模式定义了对象间一种一对多的依赖关系,使得每当一个对象改变状态时,则所有依赖于它的对象都会得到通知并被自动更新。
观察者模式的使用情景:
- 关联行为场景;
- 事件多级触发场景;
- 跨系统的消息交换场景(如消息队列、事件总线的处理机制);
1.观察者模式
观察者模式 | |
---|---|
优点 | 1、观察者和被观察者之间是耦合抽象,应对业务变化; 2、增强了系统灵活性、可扩展性; |
缺点 | 1、开发调试变的比较复杂,Java中消息的通知是顺序执行,一个消息的卡顿会影响整体的执行效率,所以使用观察者模式还需要结合异步操作的方式; |
UML 类图:
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");
}
输出结果:
test4, update:new
test3, update:new
test2, update:new
test1, update:new
可以看到所有订阅了被观察者的观察者都接收到了更新消息,一对多的订阅——发布系统就完成了。
以上是关于Android 架构设计实现——MVP模式的主要内容,如果未能解决你的问题,请参考以下文章
Android App的设计架构:MVC,MVP,MVVM与架构经验谈
Android App的设计架构:MVC,MVP,MVVM与架构经验谈