揭秘Android架构:MVC vs MVP vs MVVM

作者: 谁动了我的代码 | 来源:发表于2023-07-30 17:27 被阅读0次

引言:

在Android应用开发中,良好的架构设计是确保应用具有可扩展性、可维护性和可测试性的关键。MVC(Model-View-Controller)、MVP(Model-View-Presenter)和MVVM(Model-View-ViewModel)是常用的三种架构模式。本文将分别介绍这三种模式的原理,并通过代码示例对其进行比较和解析。

一、MVC(Model-View-Controller)

模式MVC模式是一种经典的架构模式,它将应用程序分为三个主要的组成部分:模型(Model)、视图(View)和控制器(Controller)。

  1. 模型(Model):负责应用程序的数据和业务逻辑。
  2. 视图(View):负责展示数据和用户界面。
  3. 控制器(Controller):接受用户输入并将其转发给模型或视图。

MVC模式的原理是将模型、视图和控制器进行解耦,使得它们可以独立地进行修改和测试。下面是一个简单的MVC模式的示例代码:

// 模型(Model)
public class User {
    private String name;
    private int age;

    // getter和setter方法省略...

    // 业务逻辑方法
    public boolean isAdult() {
        return age >= 18;
    }
}

// 视图(View)
public interface UserView {
    void displayUserInfo(User user);
}

// 控制器(Controller)
public class UserController implements UserView {
    private User user;
    private UserView userView;

    public UserController(User user, UserView userView) {
        this.user = user;
        this.userView = userView;
    }

    // 用户输入处理方法
    public void onUserInput(String name, int age) {
        user.setName(name);
        user.setAge(age);
        userView.displayUserInfo(user);
    }

    @Override    public void displayUserInfo(User user) {
        // 更新视图    }
}

MVC模式的优点在于模块化、可扩展性和可维护性。但它的缺点是控制器和视图之间的耦合度较高,导致代码的复杂性和难以测试。

二、MVP(Model-View-Presenter)模式

MVP模式是对MVC模式的改进,它将应用程序分为三个主要的组成部分:模型(Model)、视图(View)和呈现器(Presenter)。

  1. 模型(Model):负责应用程序的数据和业务逻辑。
  2. 视图(View):负责展示数据和用户界面。
  3. 呈现器(Presenter):接受用户输入并处理与模型的交互。

MVP模式的原理是将视图与模型解耦,并通过呈现器来协调它们之间的交互。下面是一个简单的MVP模式的示例代码:

// 模型(Model)
public
javapublic
   private String name;
    private int age;

    // getter和setter方法省略...

    // 业务逻辑方法    public boolean isAdult() {
        return age >= 18;
    }
}

// 视图(View)
public interface UserView {
    void displayUserInfo(User user);
}

// 呈现器(Presenter)
public class UserPresenter {
    private User user;
    private UserView userView;

    public UserPresenter(User user, UserView userView) {
        this.user = user;
        this.userView = userView;
    }

    // 用户输入处理方法    public void onUserInput(String name, int age) {
        user.setName(name);
        user.setAge(age);
        userView.displayUserInfo(user);
    }
}

MVP模式的优点是解耦视图和模型,使得它们可以独立地进行修改和测试。同时,呈现器的存在也使得视图和模型之间的交互更加清晰和灵活。

三、MVVM(Model-View-ViewModel)

模式MVVM模式是一种新兴的架构模式,它将应用程序分为三个主要的组成部分:模型(Model)、视图(View)和视图模型(ViewModel)。

  1. 模型(Model):负责应用程序的数据和业务逻辑。
  2. 视图(View):负责展示数据和用户界面。
  3. 视图模型(ViewModel):将模型数据转换为视图所需的数据,并处理视图逻辑。

MVVM模式的原理是通过使用数据绑定来实现视图和视图模型的自动更新。下面是一个简单的MVVM模式的示例代码:

public class User {
    private String name;
    private int age;

    // getter和setter方法省略...

    // 业务逻辑方法    public boolean isAdult() {
        return age >= 18;
    }
}

// 视图模型(ViewModel)
public class UserViewModel extends ViewModel {
    private MutableLiveData<User> userLiveData = new MutableLiveData<>();

    public LiveData<User> getUserLiveData() {
        return userLiveData;
    }

    // 用户输入处理方法
    public void onUserInput(String name, int age) {
        User user = new User();
        user.setName(name);
        user.setAge(age);
        userLiveData.setValue(user);
    }
}

// 视图(View)
public class UserActivity extends AppCompatActivity {
    private UserViewModel userViewModel;

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

        userViewModel = new ViewModelProvider(this).get(UserViewModel.class);

        // 视图数据绑定        userViewModel.getUserLiveData().observe(this, new Observer<User>() {
            @Override            public void onChanged(User user) {
                // 更新视图            }
        });
    }
}

MVVM模式的优点是实现了视图和视图模型的解耦,并通过数据绑定实现了自动更新视图的功能。这使得开发人员可以更加专注于业务逻辑的实现,提高了开发效率。

文章主要是解析了在Android架构中MVC、MVP和MVVM等框架技术,想要深入了解或者进阶Android技术,可以参考《 Android核心技术手册》点击可以查看详细类容。

总结:

MVC、MVP和MVVM是Android开发中常用的架构模式,它们都有各自的优点和适用场景。

MVC模式将应用程序分为模型、视图和控制器三个部分。模型负责数据和业务逻辑,视图负责展示数据和用户界面,控制器负责接受用户输入并将其转发给模型或视图。MVC模式的优点在于模块化、可扩展性和可维护性,但缺点是控制器和视图之间的耦合度较高。

MVP模式是对MVC模式的改进,将应用程序分为模型、视图和呈现器三个部分。模型负责数据和业务逻辑,视图负责展示数据和用户界面,呈现器负责接受用户输入并处理与模型的交互。MVP模式的优点是解耦视图和模型,使得它们可以独立地进行修改和测试,同时呈现器的存在也使得视图和模型之间的交互更加清晰和灵活。

MVVM模式是一种新兴的架构模式,将应用程序分为模型、视图和视图模型三个部分。模型负责数据和业务逻辑,视图负责展示数据和用户界面,视图模型将模型数据转换为视图所需的数据,并处理视图逻辑。MVVM模式通过使用数据绑定实现了视图和视图模型的自动更新,使得开发人员可以更加专注于业务逻辑的实现。

相关文章

网友评论

    本文标题:揭秘Android架构:MVC vs MVP vs MVVM

    本文链接:https://www.haomeiwen.com/subject/fnuspdtx.html