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

Posted 一叶知秋V

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android 架构设计实现——MVP模式相关的知识,希望对你有一定的参考价值。

观察者模式是一种使用频率非常高的模式,有时也被称作发布/订阅模式,属于行为型模式,它最常用的是 GUI 系统、发布/订阅系统,它一个重要作用就是解耦,使得它们之间的依赖性更小。观察者模式定义了对象间一种一对多的依赖关系,使得每当一个对象改变状态时,则所有依赖于它的对象都会得到通知并被自动更新。

观察者模式的使用情景:

  • 关联行为场景;
  • 事件多级触发场景;
  • 跨系统的消息交换场景(如消息队列、事件总线的处理机制);

1.观察者模式

观察者模式
优点1、观察者和被观察者之间是耦合抽象,应对业务变化;
2、增强了系统灵活性、可扩展性;
缺点1、开发调试变的比较复杂,Java中消息的通知是顺序执行,一个消息的卡顿会影响整体的执行效率,所以使用观察者模式还需要结合异步操作的方式;

UML 类图:

观察者模式 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与架构经验谈

Android App的设计架构:MVC,MVP,MVVM与架构经验谈

Android框架设计模式MVCMVPMVVM

Android MVP架构模式

什么是MVP架构模式(ModelViewPresenter)?(软件设计模式MVCMVVW)