从 Android MVC 到 MVP 的转变

流程图

flowchart TD
    A[开始] --> B[了解 MVC 架构]
    B --> C[了解 MVP 架构]
    C --> D[实现 MVP 架构]
    D --> E[结束]

饼状图

pie
    title 流程比例
    "了解 MVC 架构" : 30
    "了解 MVP 架构" : 20
    "实现 MVP 架构" : 50

了解 MVC 架构

在开始学习如何从 Android MVC 转换为 MVP 之前,首先需要了解 MVC 架构的基本概念。MVC 是一种软件设计模式,它将应用程序分为三个独立的部分:模型(Model)、视图(View)和控制器(Controller)。模型负责处理数据逻辑,视图负责展示界面,而控制器负责处理用户输入和业务逻辑。

了解 MVP 架构

MVP 是基于 MVC 架构的一种演变,它将控制器改为了 Presenter,从而使得视图和模型的交互更加清晰和灵活。在 MVP 架构中,视图和模型之间不直接通信,而是通过 Presenter 进行交互。

实现 MVP 架构

为了将 Android 项目从 MVC 架构改为 MVP 架构,需要按照以下步骤进行:

步骤 操作
1 创建一个基础的 MVP 结构,包括 Model、View 和 Presenter。
2 修改现有的 View 层代码,将业务逻辑抽离出来,放到 Presenter 中。
3 修改 Model 层代码,使其只处理数据逻辑,不涉及业务逻辑。
4 在 View 层中持有 Presenter 的引用,并在合适的时机调用 Presenter 的方法。
5 在 Presenter 中持有 Model 和 View 的引用,进行数据处理和逻辑控制。

具体代码实现如下:

1. 创建基础 MVP 结构:
```java
// Model 接口
public interface Model {
    void getData();
}

// View 接口
public interface View {
    void showData(String data);
}

// Presenter 类
public class Presenter {
    private Model model;
    private View view;

    public Presenter(Model model, View view) {
        this.model = model;
        this.view = view;
    }

    public void requestData() {
        model.getData();
    }

    public void onDataReceived(String data) {
        view.showData(data);
    }
}
2. 修改 View 层代码:
```java
public class MainActivity extends AppCompatActivity implements View {
    private Presenter presenter;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Model model = new ModelImpl();
        presenter = new Presenter(model, this);
        presenter.requestData();
    }

    @Override
    public void showData(String data) {
        // 显示数据
    }
}
3. 修改 Model 层代码:
```java
public class ModelImpl implements Model {
    @Override
    public void getData() {
        // 获取数据
    }
}
4. 在 View 层中持有 Presenter 的引用:
```java
private Presenter presenter;
5. 在 Presenter 中持有 Model 和 View 的引用:
```java
private Model model;
private View view;

## 结论

通过以上步骤,你已经成功将 Android 项目从 MVC 架构转换为 MVP 架构。MVP 架构能够更好地解耦界面和逻辑,使得代码更加清晰和易于维护。希望这篇文章能够帮助你更好地理解和实践 Android 开发中的架构设计。祝你在学习和工作中取得更大的进步!