Android: MVVM 和关注点分离
Android: MVVM and separation of concerns
我即将完成将我的应用程序迁移到具有数据绑定和实时数据的 MVVM(不过仍然 java),现在我拥有的不仅仅是一个体面的架构 Android 应用程序(我正在展示以下)。我对此很满意,但还想更进一步。
谈到干净的架构,我试图弄清楚如何在 Android(数据库、业务、服务等)中进行适当的关注点分离。
我在 .net 和那个平台上工作,你对分离层所做的是为每一层(数据库、业务、演示)创建一个不同的项目,然后你以正确的顺序引用它们,但是项目是大部分是独立的。
在 Android 中,据我所知,您有一个应用程序模块,即使我有一个很好的包聚合,所有内容都“一起”到同一个项目中。
我不确定这是否是真正遵循干净架构原则的最佳方法。我听说过 Dagger,听说你可以用它创建模块,但不确定它是否适合我正在尝试做的事情。
任何 help/hints 关于在 Android 中实现关注点分离的好方法?
我当前的应用结构:
com
xxx
xxx
dto
class_1_dto.java
...
class_N_dto.java
helpers
helper_http.java
helper_json.java
helper_utils.java
helper_enum.java
helper_file.java
helper_smtp.java
helper_date.java
...
model
model_class_1
model_class_2
...
all_model_classes_linked_to_AWS_database
poco
some_poco_classes
repository
aws
IAWSDAO
AWS_Repository
...
all_stuff_related_to_AWS_database_query
local
model_class_1_repo
model_class_2_repo
...
all_stuff_related_to_SQLite_database_query
services
model_class_1_serv
model_class_2_serv
...
all_stuff_related_to_local_repos_query
ui
activities
activity_1
activity_1_viewmodel
activity_2
activity_2_viewmodel
...
activity_N
activity_N_viewmodel
component
custom_view_1
custom_view_2
...
helpers
view_helper_1
...
view_helper_N
assets
res
...
您可以通过制作多个模块来分离您的关注点,例如(应用程序、核心、网络、服务、存储库)。就像'app'是一个模块,你可以为每个关注点创建一个独立的模块,你可以使用Koin在模块之间进行依赖注入。
这里有一个例子供参考github repo:
我即将完成将我的应用程序迁移到具有数据绑定和实时数据的 MVVM(不过仍然 java),现在我拥有的不仅仅是一个体面的架构 Android 应用程序(我正在展示以下)。我对此很满意,但还想更进一步。
谈到干净的架构,我试图弄清楚如何在 Android(数据库、业务、服务等)中进行适当的关注点分离。
我在 .net 和那个平台上工作,你对分离层所做的是为每一层(数据库、业务、演示)创建一个不同的项目,然后你以正确的顺序引用它们,但是项目是大部分是独立的。
在 Android 中,据我所知,您有一个应用程序模块,即使我有一个很好的包聚合,所有内容都“一起”到同一个项目中。
我不确定这是否是真正遵循干净架构原则的最佳方法。我听说过 Dagger,听说你可以用它创建模块,但不确定它是否适合我正在尝试做的事情。
任何 help/hints 关于在 Android 中实现关注点分离的好方法?
我当前的应用结构:
com
xxx
xxx
dto
class_1_dto.java
...
class_N_dto.java
helpers
helper_http.java
helper_json.java
helper_utils.java
helper_enum.java
helper_file.java
helper_smtp.java
helper_date.java
...
model
model_class_1
model_class_2
...
all_model_classes_linked_to_AWS_database
poco
some_poco_classes
repository
aws
IAWSDAO
AWS_Repository
...
all_stuff_related_to_AWS_database_query
local
model_class_1_repo
model_class_2_repo
...
all_stuff_related_to_SQLite_database_query
services
model_class_1_serv
model_class_2_serv
...
all_stuff_related_to_local_repos_query
ui
activities
activity_1
activity_1_viewmodel
activity_2
activity_2_viewmodel
...
activity_N
activity_N_viewmodel
component
custom_view_1
custom_view_2
...
helpers
view_helper_1
...
view_helper_N
assets
res
...
您可以通过制作多个模块来分离您的关注点,例如(应用程序、核心、网络、服务、存储库)。就像'app'是一个模块,你可以为每个关注点创建一个独立的模块,你可以使用Koin在模块之间进行依赖注入。
这里有一个例子供参考github repo: