Android 架构设计实现——MVP模式

登山则情满于山,观海则意溢于海。这篇文章主要讲述Android 架构设计实现——MVP模式相关的知识,希望能为你提供帮助。
观察者模式是一种使用频率非常高的模式, 有时也被称作发布/订阅模式, 属于行为型模式, 它最常用的是 GUI 系统、发布/订阅系统, 它一个重要作用就是解耦, 使得它们之间的依赖性更小。观察者模式定义了对象间一种一对多的依赖关系, 使得每当一个对象改变状态时, 则所有依赖于它的对象都会得到通知并被自动更新。
观察者模式的使用情景:

  • 关联行为场景;
  • 事件多级触发场景;
  • 跨系统的消息交换场景( 如消息队列、事件总线的处理机制) ;
1.观察者模式
观察者模式
优点1、观察者和被观察者之间是耦合抽象, 应对业务变化;
2、增强了系统灵活性、可扩展性;
缺点1、开发调试变的比较复杂, java中消息的通知是顺序执行, 一个消息的卡顿会影响整体的执行效率, 所以使用观察者模式还需要结合异步操作的方式;
UML 类图:
Android 架构设计实现——MVP模式

文章图片

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

可以看到所有订阅了被观察者的观察者都接收到了更新消息, 一对多的订阅——发布系统就完成了。

    推荐阅读