【发布时间】:2019-09-18 12:33:50
【问题描述】:
我有两个应用程序:应用程序模块 A 和 应用程序模块 B。他们都使用Library Module X。
在 Library Module X 内部,我有一些不同的行为,具体取决于哪个应用程序正在使用该库。我认为实现这一目标的三种选择。
1º 硬编码提及应用程序。 someClass 将由应用程序注入或仅检查包。 (我认为最糟糕的一个):
if (someClass.isApplicationA()) {
doThis()
} else {
doThat()
}
2º 硬编码提及将要做什么。 someClass 将由应用程序注入。 (我也不太喜欢):
if (someClass.shouldDoThis()) {
doThis()
} else {
doThat()
}
3º 使用口味。我将为Application Module A 定义一个flavor A,为Application Module B 定义一个flavor B。在 Library Module X 中,我会定义这两种风格。所以我会把自定义代码放在一些特定的类中,这些类对每种风格都有不同的版本。
customClassByFlavor.justDoIt()
在任何地方,我只看到风味被用于单个应用程序。这是对它的正确使用吗?
【问题讨论】:
-
味道是邪恶的。应用程序应该将变化的行为传递给库类的构造函数。
标签: android android-build-flavors android-flavors