Android MVC 模式介绍及面试准备

在 Android 开发中,MVC(Model-View-Controller)是一种常用的架构模式,用于帮助组织和管理代码,使代码结构更清晰,易于维护和扩展。在面试中,对于 MVC 模式的理解和应用经常是被问及的问题之一。本文将介绍 Android 中 MVC 模式的基本概念,并提供一些面试准备的示例代码。

MVC 模式概述

MVC 模式将应用程序分为三个部分:Model(模型)、View(视图)和Controller(控制器)。这三个部分之间的交互如下:

  • Model(模型):负责数据的处理和存储。通常包含数据结构、数据库操作、网络请求等逻辑。
  • View(视图):用户界面的展示,负责与用户交互。通常包含布局、控件、UI 事件等。
  • Controller(控制器):连接模型和视图,负责处理用户输入、更新数据模型、更新视图等。

通过将应用程序分为这三个部分,MVC 模式使代码更易于维护和扩展,同时也提高了代码的可读性和可重用性。

示例代码

下面通过一个简单的登录页面示例来演示 MVC 模式在 Android 中的应用。在这个示例中,我们将创建一个简单的登录页面,包括用户名和密码的输入框以及登录按钮。

Model

首先,我们创建一个 User 类作为模型,用于存储用户的信息:

public class User {
    private String username;
    private String password;

    public User(String username, String password) {
        this.username = username;
        this.password = password;
    }

    public String getUsername() {
        return username;
    }

    public String getPassword() {
        return password;
    }
}

View

然后,我们创建一个布局文件 activity_login.xml,定义登录页面的 UI 布局:

<RelativeLayout xmlns:android="
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <EditText
        android:id="@+id/et_username"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Username"/>

    <EditText
        android:id="@+id/et_password"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:hint="Password"
        android:inputType="textPassword"/>

    <Button
        android:id="@+id/btn_login"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Login"/>
</RelativeLayout>

Controller

最后,我们创建一个 LoginController 类作为控制器,在其中处理用户输入和更新数据模型:

public class LoginController {
    private User user;

    public LoginController() {
        user = new User("", "");
    }

    public void setUsername(String username) {
        user = new User(username, user.getPassword());
    }

    public void setPassword(String password) {
        user = new User(user.getUsername(), password);
    }

    public void login() {
        // 处理登录逻辑,比如验证用户名密码等
    }
}

将 Model、View 和 Controller 结合起来

最后,在 LoginActivity 中将 Model、View 和 Controller 结合起来:

public class LoginActivity extends AppCompatActivity {

    private EditText etUsername;
    private EditText etPassword;
    private Button btnLogin;
    private LoginController loginController;

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

        etUsername = findViewById(R.id.et_username);
        etPassword = findViewById(R.id.et_password);
        btnLogin = findViewById(R.id.btn_login);
        loginController = new LoginController();

        btnLogin.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String username = etUsername.getText().toString();
                String password = etPassword.getText().toString();

                loginController.setUsername(username);
                loginController.setPassword(password);
                loginController.login();
            }
        });
    }
}

总结

通过以上示例代码,我们展示了在 Android 中如何使用 MVC 模式来组织代码。Model 负责数据的处理和存储,View 负责用户界面的展示,Controller 负责连接 Model 和 View,处理用户