MVP(Model-View-Presenter) 是一种应用架构模式,常被用来开发 Android 应用程序。MVP 将程序分为三个主要组成模块:模型(Model)、视图(View)和表示器(Presenter)。每个模块都有自己的职责和任务。
模型:代表应用程序的数据和业务逻辑。它负责从数据库或网络获取数据,并保存数据。模型通过接口向表示器提供数据和业务逻辑。
视图:代表用户界面。它显示数据并向表示器发送事件。视图不包含业务逻辑。
表示器:连接模型和视图,并控制应用程序的流程。它从视图接收事件,并向模型请求数据。然后,它将数据格式化并将其发送回视图进行显示。表示器也处理用户操作的响应。
MVP 模式主要优势在于分离了应用程序的可视化元素(视图)和业务逻辑(模型和表示器)。这意味着应用程序可以更好的组织和维护,并进行更好的测试。
下面是几个示例:
1. Model示例
```java
public class User {
private String name;
private String email;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
//Model业务逻辑的实现
public boolean isValid() {
return !TextUtils.isEmpty(email) && Patterns.EMAIL_ADDRESS.matcher(email).matches();
}
}
```
2. View示例
```java
public interface MainView {
void showLoading();
void hideLoading();
void setNameError();
void setEmailError();
void navigateToHome();
}
```
3. Presenter示例
```java
public class MainPresenter implements MainContract.Presenter, MainContract.OnLoginFinishedListener {
private MainContract.View view;
private UserModel userModel;
public MainPresenter(MainContract.View view) {
this.view = view;
this.userModel = new UserModelImpl();
}
//响应View事件的实现
@Override
public void validateCredentials(User user) {
if (view != null) {
view.showLoading();
}
userModel.login(user,this);
}
//响应Model事件的实现
@Override
public void onUsernameError() {
if (view != null) {
view.setNameError();
view.hideLoading();
}
}
@Override
public void onEmailError() {
if (view != null) {
view.setEmailError();
view.hideLoading();
}
}
@Override
public void onSuccess() {
if (view != null) {
view.navigateToHome();
}
}
}
```
MVP 模式的实现可以让我们轻松地扩展应用程序,使其更易于维护和测试。在 Android 中,MVP 是一种非常流行的应用程序架构,值得学习和尝试。