从ViewModel调用变量的最佳实践



我有这个变量在我的ViewModel:

private String chosenDay;

,当我想设置选定的日期时,我使用setter函数:

public void setChosenDate(String date){
chosenDay = date;
}

当我想使用它时,我使用getter:

public String getChosenDay(){
return chosenDay;
}

我的问题是:你认为这是一个很好的做法,使用getter和setter为viewModel或者我可以直接从活动访问变量?

viewModel.chosenDay = "Monday"

谢谢你!

真的取决于你想写你的代码。如果您希望遵循面向对象原则,那么您的示例就是正确的方式。你正在做"封装"。

封装是四个基本的面向对象概念之一。

封装的好处:

  • 类的字段可以设置为只读或只写。
  • 类可以完全控制存储在其字段中的内容。

将变量存储在ViewModel中对我来说听起来像是一种更好的方法:当您旋转屏幕时,存储在Activity中的所有变量将被清除,您需要手动处理它们的恢复(onSaveInstanceState->onCreate)。

但这不是视图模型的情况(通常),因为它们打算在这样的转换中幸存下来,因此值将保持其状态,而不需要额外的努力。

我认为这其中有一些"意识形态"。在ViewModels/presentors中存储状态的原因:通常认为最小化UI层(Fragments, Activities等)中存储的代码和状态是一个很好的实践

YourViewModel用于处理视图所需的数据,或者你想从网络调用收集数据,以便在Activity/Fragment中向用户显示它们,如果你有一个特定的情况,你想保存chosenDate使用它可能在另一个活动/片段,你可以使用setter和getter,获取和设置日期,使用它在另一个活动/片段通过使用共享ViewModel的否则你也可以将它用于一个活动/片段,这完全取决于你的用例。

最新更新