基于Hilt的架构设计
来源:1-1 课前必读(不看会错过一个亿)

慕UI5413841
2022-11-19
老师在课程中讲的这个图。我认为是不对的!似乎在设计上无法实现,比如现在我有个需求,需要在App中使用mudule B 模块下的登陆功能,理想的方式是使用者也就App层调用ILoginService#login()方法,通过Hilt找到对应的LoginServiceImpl。且App层不应该知道,引用,或是依赖得到,也就是找到LoginServiceImpl类,那么我改如何设计?我能想到的就是App Module dependency Basic Module,Login Module dependency Basic Module,接口在Basic ,Impl在Login Module,同时@Module只能定义在Login Module 否则我无法找到LoginServiceImpl,通过@Binds去传入。这样设计的目的是使用者无法导入LoginServiceImpl(因为Login Module与App 没有直接依赖关系 ),直接调用ILoginService就可以。理想是这样的。但实际中问题出现了。如果App不依赖 Login Module,那么将编译无法通过。因为生成的Compenont在 Login Module下,我只有让App依赖 Login Module才能编译通过,这显然无法达到我的预期。
所以老师画的这个图片,让Component去不同的模块去找,现在是无法实现。所以老师的图中的架构设计是怎么样的依赖关系呢?(最好不要有循环依赖,比如login 依赖 basic basic再依赖login 将 @module放在basic中,这样虽然可以,但是存在循环依赖了,不是我想要的方案)
2 . 更复杂的情况:module A 想使用 Module B中的某个功能或是方法,那我改如何设计,在不该动Module B的情况下,只通过接口,让module B实现接口 在通过Hilt达到跨模块调用?我的理解不管如何引入中间件Module 都是无法实现的,Hilt dagger2都一样。老师能解决这样的问题 吗?有什么好的方案吗?
最近在设计架构,老师能帮我想想有什么方案吗?这个图是不是像我理解的,是错的呢?
1回答
-
LovelyChubby
2022-11-28
Jetpack没有讲Hilt😂,Hilt在国内使用场景并不多,因为不易读。掌握原理即可012022-11-28
相似问题
回答 1
回答 1