大家好!
作为 Android 程序猿,MVC 应该是我们第一个接触的架构吧,从开始接触 Android 那一刻起,我们就开始接触它,可还记得我们写的第一个 App 代码的样子?
架构设计的目的
通过设计使程序模块化,模块内 高内聚、模块间 低耦合,提高开发效率,便于复用及后续维护。
对 MVC 的理解
上图是 MVC 的架构图,我们都知道,MVC架构中 M 代表 Model(模型)、V 代表 View(视图)、C 代表 Controller(控制器)。它们的职责分别是:
- View 负责接收用户的输入事件,然后将事件传递给 Controller;
- Controller 收到事件后,会进行业务处理,通知 Model 请求数据;
- Model 拿到数据后返回给 Controller 进行后续处理,或者通知 View 更新 UI。
Android 中 MVC 的问题
其实 Android 的设计就采用了 MVC 架构,通常由 Activity 充当 Controller,不幸的是,在 Android 中,由于 xml 的弱功能性,导致 Activity 还需要兼职一部分 View 的功能,所以原本是负责初始化页面的 Activity,就变成了 View 和 Controller 的载体,导致这两部分内容耦合在 Activity 中。后果就是Activity 越来越臃肿、难以维护。这就违反了架构设计的初衷,所以就有了后来的 MVP 架构。
try a demo
点击按钮,请求 wanandroid 网站的 banner 接口数据,请求成功后更新到UI上显示接口数据
Model
请求接口,获取 banner 数据
Repository.java
public final class Repository {
private ApiService mService;
private Repository() {
createService();
}
public static Repository getInstance() {
return SingletonHolder.sInstance;
}
private static final class SingletonHolder {
private static final Repository sInstance = new Repository();
}
/**
* 请求 banner 数据
*/
public void getBanners(ResponseCallback<List<Banner>> callback) {
mService.getBanners().enqueue(new Callback<