我在电子商务网站上工作。我遵循 MVVM 和 Dagger 2 的整洁架构。但是当我们需要在模块之间进行通信时我会卡住,这意味着我必须从一个模块调用另一个模块的一些方法和类。
实际情况是 - 购物车有一个单独的模块,类别有另一个模块(由基于类别的产品组成)
我在购物车模块中有一些 API(例如 addToCart、获取购物车列表、删除购物车项目等)需要在购物车模块和类别模块中调用(addToCart API 需要从类别模块调用)。
一种方法是在两个模块中再次编写相同的代码,这将增加额外的工作量并使两个模块都依赖,这违反了整洁的架构方法。
谁能建议我在整洁的架构中最好的方法。
最佳答案
您可以使用共享代码创建一个新模块并将其添加为两个模块(购物车和类别)中的依赖项,如果您按层进行模块化,则可以对数据层执行相同的操作,因此如果您需要相同的 API另一个模块,您可以将其添加为依赖项,或者如果您只使用某些部分,则将其拆分为新模块。
implementation project(':common_apis_module')
在整洁的架构中,如果您从一个模块发出请求,它被理解为不同的用例,如果您需要在两种情况下从模型中获取相同的数据,那么您可能需要在一个公共(public)模块中共享 UseCase。
在 common_apis_module 中为模块之间的通信创建接口(interface)。
interface CommunicationModule1 {
fun doSomethingInModule1(someParam: String)
fun doAnotherThingInModule1(anotherParam: Int)
}
并在第二个模块中创建另一个与上述相同的通信接口(interface)。 然后你在两个模块中添加了那个公共(public)模块,你将能够使用两个模块中的接口(interface)。 我建议使用 Dagger 。
class OneClassInModule2 : DaggerAppCompatActivity{
@Inject
late init var communicationModule1 : CommunicationModule1
}
第二类:
class OneClassInModule1: CommunicationModule1 {
override fun doSomethingInModule1(someParam: String){
// Do Something with the string
}
}
关于android - 哪种是整洁架构中模块之间通信的最佳方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58613388/