我有一个 Activity,并为其创建了一个视图模型。我创建了不同的类,如 UiUtil(显示、隐藏视图、隐藏键盘)、网络层、数据库层、AppUtil(用于常见功能,如集合检查、字符串验证、日期转换等)
我的问题是,在MVVM设计模式中,Activity可以直接使用这些实用程序类,或者它需要通过视图模型使用这些类,如果它通过视图模型,那么在视图模型中我必须编写一个只调用实用程序类的方法方法 。像下面的 TimeDateManager 是视图模型中使用的实用程序类
class HomeViewModel: BaseViewModel()
{
fun prepareTimeAmPmToDisplay(context: Context, alarm: Alarm): String
{
return TimeDateManager.prepareTimeAmPmToDisplay(context, alarm)
}
}
架构不是强制性的,它们是推荐性的,因此您可以在相当大的范围内改变它们的用法。唯一的障碍应该是常识(当然如果它存在的话)。
Activity在这种特殊情况下,根据您的ViewModel构造及其通信方式View(阅读) ,在内部使用实用程序类可能没问题Activity。
例如,如果您有一些LiveData在您的内部发送某种事件(例如从后端加载的数据或警报触发器)ViewModel并且您监听它,我认为在inView中使用 util 类是可以的。特别是如果这个 utils 方法不依赖于任何数据。不过,直接 utils 的使用并不受此用例的限制 - 还有很多其他用例。ObserverActivityViewModelRepositoryActivity
我知道这在现代的“干净方法”中可能是一个不受欢迎的观点,但我相信这种“干净方法”有时会使不应该的事情变得复杂,因此,如果稍微混合一些东西并不会破坏整体架构,而是会使一些东西变得复杂。更具可读性且易于维护的东西 - 我会追求它。
希望能帮助到你。
| 归档时间: |
|
| 查看次数: |
1010 次 |
| 最近记录: |