Android 常用的设计模式 三 (MVVM)模式)

  1. MVC(Model-View-Controller)模式
  2. MVP(Model-View-Presenter)模式
  3. MVVM(Model-View-ViewModel)模式
  4. Singleton(单例)模式
  5. Factory(工厂)模式
  6. Observer(观察者)模式
  7. Strategy(策略)模式
  8. Adapter(适配器)模式

这些设计模式都有不同的特点和用途,在开发 Android 应用程序时可以根据具体的需求进行选择。

MVVM 是一种用于构建用户界面的设计模式,其中视图(View)、视图模型(ViewModel)和模型(Model)分别承担不同的职责,以实现代码的分离和可维护性的提高。

MVVM 模式的三个主要组成部分如下:

  • 视图(View):这是用户界面的组成部分,负责向用户显示数据并处理用户输入。在 Android 应用程序中,视图通常是 Activity、Fragment 或自定义 View。
  • 视图模型(ViewModel):这是一个中介层,它负责从模型中获取数据,并将数据格式化为视图可以使用的形式。它还处理用户输入并更新模型。视图模型是独立于视图的,因此可以在多个视图之间共享。在 Android 应用程序中,视图模型通常是一个 ViewModel 类。
  • 模型(Model):这是应用程序的数据层,负责获取和保存数据。在 Android 应用程序中,模型通常是使用 Room 或 ContentProvider 等持久化层框架实现的。

下面是一个简单的 Android MVVM 模式示例代码:

// Model
public class User {
    private String name;
    private int age;
    
    // getters and setters
}

// ViewModel
public class UserViewModel extends ViewModel {
    private MutableLiveData<User> userLiveData = new MutableLiveData<>();
    
    public LiveData<User> getUserLiveData() {
        return userLiveData;
    }
    
    public void setUser(User user) {
        userLiveData.setValue(user);
    }
    
    public void updateUserAge(int age) {
        User user = userLiveData.getValue();
        user.setAge(age);
        userLiveData.setValue(user);
    }
}

// View
public class MainActivity extends AppCompatActivity {
    private UserViewModel userViewModel;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        userViewModel = new ViewModelProvider(this).get(UserViewModel.class);
        
        final TextView nameTextView = findViewById(R.id.name_textview);
        final TextView ageTextView = findViewById(R.id.age_textview);
        final Button updateAgeButton = findViewById(R.id.update_age_button);
        
        userViewModel.getUserLiveData().observe(this, new Observer<User>() {
            @Override
            public void onChanged(User user) {
                nameTextView.setText(user.getName());
                ageTextView.setText(String.valueOf(user.getAge()));
            }
        });
        
        updateAgeButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                userViewModel.updateUserAge(30);
            }
        });
    }
}

在上面的示例代码中,View 是 MainActivity 类,它显示用户的名字和年龄,并包含一个按钮,用于更新用户的年龄。ViewModel 是 UserViewModel 类,它从 Model 中获取 User 对象,并将其包装在 LiveData 对象中。View 观察 UserViewModel 中的 LiveData 对象,以更新用户界面。Model 是 User 类,它包含用户的姓名和年龄。

MVVM 模式的优点如下:

  • 它可以将应用程序的不同部分分离开来,使得代码更加模块化和可维护。
  • 它可以提高代码的可测试性,因为它将逻辑分离到 ViewModel 层,使得测试更加容易。
  • 它可以提高开发效率,因为 ViewModel 可以管理多个视图,并且可以处理用户输入和数据更新,减少了视图和模型之间的交互。

MVVM 模式的缺点如下:

  • 它增加了代码的复杂性,因为需要创建额外的类来处理视图和模型之间的通信。
  • 它需要更多的学习和了解,因为它需要理解数据绑定和 LiveData 等概念。

总体来说,MVVM 模式是一种强大的设计模式,可以使得 Android 应用程序更加可维护、可测试和可扩展。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android源码设计模式解析与实践是一本关于Android系统中的设计模式的书籍,旨在通过解析Android源码中的实际案例来理解和应用设计模式Android系统是一个庞大而复杂的开源项目,其中包含了大量的设计模式。这些设计模式不仅帮助Android系统实现了高效、稳定、易于扩展的特性,也可以为Android开发者提供参考和借鉴的经验。 本书首先介绍了设计模式的概念和基本原理,包括单例模式、工厂模式、观察者模式、策略模式等。然后,结合Android源码中的具体实例,详细讲解了这些设计模式Android系统中的应用场景和实践方法。 例如,书中通过分析Android系统中的Activity、Fragment、View等核心组件的源码,解析了它们是如何应用观察者模式和状态模式来实现界面更新和事件传递的。又如,书中通过分析Android系统中的Handler、Looper、MessageQueue等核心类的源码,讲解了它们是如何应用责任链模式来实现线程间通信和消息处理的。 此外,本书还探讨了Android系统中的一些特殊设计模式,如MVC模式、MVP模式MVVM模式等,帮助读者理解和应用这些模式来构建更加优雅和可维护的Android应用程序。 总之,通过学习和实践本书中介绍的Android源码设计模式,读者可以更深入地了解Android系统的设计原则和实践经验,提升自己的Android开发技能,并能够更加高效地开发出高质量的Android应用程序。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值