导航菜单

软件工程/第三方库与架构模式
课程进度 77% · 第9/11章9/11章 · 标签 1/2
1

MVP 架构模式

MVP(Model-View-Presenter)是 Android 中常用的架构模式。View 负责 UI 展示,Presenter 负责业务逻辑,Model 负责数据层。

java
1
// MVP 架构实现
2
public interface LoginView {
3
void showLoading();
4
void hideLoading();
5
void onLoginSuccess(String token);
6
void onLoginError(String error);
7
}
8
 
9
public class LoginPresenter {
10
private LoginView view;
11
private LoginModel model;
12
 
13
public LoginPresenter(LoginView view) {
14
this.view = view;
15
this.model = new LoginModel();
16
}
17
 
18
public void login(String username, String password) {
19
view.showLoading();
20
model.login(username, password, new Callback() {
21
@Override
22
public void onSuccess(String token) {
23
view.hideLoading();
24
view.onLoginSuccess(token);
25
}
26
 
27
@Override
28
public void onError(String error) {
29
view.hideLoading();
30
view.onLoginError(error);
31
}
32
});
33
}
34
}
2

MVVM 架构模式

MVVM(Model-View-ViewModel)是 Google 官方推荐的架构,结合 Jetpack 组件使用效果最佳。

java
1
public class MyViewModel extends ViewModel {
2
private MutableLiveData<String> data = new MutableLiveData<>();
3
 
4
public LiveData<String> getData() {
5
return data;
6
}
7
 
8
public void fetchData() {
9
// 在后台线程加载数据
10
data.setValue("加载中...");
11
new Thread(() -> {
12
String result = loadFromNetwork();
13
data.postValue(result);
14
}).start();
15
}
16
}
17
 
18
// 在 Activity 中使用
19
MyViewModel viewModel = new ViewModelProvider(this).get(MyViewModel.class);
20
viewModel.getData().observe(this, text -> {
21
textView.setText(text);
22
});

架构对比

  • MVC —— 早期 Android 模式,Activity 既当 View 又当 Controller
  • MVP —— View 与 Presenter 通过接口通信,可测试性强
  • MVVM —— ViewModel 与 LiveData/Flow 结合,自动管理生命周期
  • MVI —— Model-View-Intent,单向数据流,状态可预测