Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于架构设计的一个疑问 #49

Closed
lwlizhe opened this issue Dec 4, 2020 · 1 comment
Closed

关于架构设计的一个疑问 #49

lwlizhe opened this issue Dec 4, 2020 · 1 comment

Comments

@lwlizhe
Copy link

lwlizhe commented Dec 4, 2020

首先,先为作者的详细注释点个赞,毕竟能详细到每一步怎么设计怎么考虑的入门项目确实少;

不过因此,我在看 ViewModel的时候产生了一个疑问:

谷歌关于Jetpack的移动架构指南(https://developer.android.google.cn/jetpack/guide 中构造界面那部分) 中是这么规定ViewModel的作用的:

ViewModel 对象为特定的界面组件(如 Fragment 或 Activity)提供数据,并包含数据处理业务逻辑,以与模型进行通信。例如,ViewModel 可以调用其他组件来加载数据,还可以转发用户请求来修改数据。ViewModel 不了解界面组件,因此不受配置更改(如在旋转设备时重新创建 Activity)的影响。

也就是说,ViewModel 应该也负责业务逻辑;

但是我看项目中任何一个继承ViewModel的类都不负责任何业务上的逻辑,比如说state的下面的只进行状态存储,那个SharedViewModel也只是为了实现 唯一可信源

比如说state下的注释中明确规定了不会有业务方面的逻辑

此外,state-ViewModel 的职责仅限于 状态托管,不建议在此处理 UI 逻辑, UI 逻辑只适合在 Activity/Fragment 等视图控制器中完成,是 “数据驱动” 的一部分, 将来升级到 Jetpack Compose 更是如此。

所以问题来了

为什么违背谷歌设计的建议而设计目前这样的架构呢?是有什么特殊使用场景需求还是?这么设计的原因和目的是?如果没有什么特殊需求的话,应该怎么设计架构?

@lwlizhe
Copy link
Author

lwlizhe commented Dec 4, 2020

额,没看到有FAQ……

@lwlizhe lwlizhe closed this as completed Dec 4, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant