我几乎完成了将我的应用程序迁移到MVVM与databinding和livedata(仍然是java),现在我有一个体面的架构Android应用程序(我在下面展示)。我很满意,但我想更进一步。
说到干净的架构,我正在努力弄清楚如何在Android中做一个适当的关注点分离(数据库,业务,服务等)。
我在。net工作,在那个平台上,你要做的就是为每一层(数据库,业务,演示)创建一个不同的项目,然后你以正确的顺序引用它们,但项目大多是独立的。
在Android中,据我所知,你有一个应用模块,尽管我有一个很好的包聚合,所有的都是"到同一个项目
我不确定这是否是真正遵循干净架构原则的最佳方法。我听说过Dagger,听说你可以用它创建模块,但不确定它是否适合我想做的事情。
关于在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, core, network, service, repository)。就像'app'是一个模块一样,你可以为每个关注点创建一个独立的模块,你可以使用Koin在模块之间进行依赖注入。
作为参考,这里有一个示例github repo:
https://github.com/Fahad-github/Bykea-CaseStudy-MusicApp