我有两个应用程序:Application Module A和Application Module B。他们都使用库模块 X。
在库模块 X中,根据使用库的应用程序,我有一些不同的行为。我认为有三种选择可以实现这一目标。
1º硬编码提及应用程序。someClass将由应用程序注入或仅检查包。(我认为最糟糕的一个):
if (someClass.isApplicationA()) {
doThis()
} else {
doThat()
}
2º硬编码提及将要完成的事情。someClass将由应用程序注入。(我也不太喜欢):
if (someClass.shouldDoThis()) {
doThis()
} else {
doThat()
}
3º 使用香精。我将为 Application Module A 定义风味A ,为Application Module B定义风味B。在Library Module X中,我将定义这两种风格。所以我会将自定义代码放在一些特定的类中,这些类对每种风格都有不同的版本。
customClassByFlavor.justDoIt()
在任何地方,我只看到风味被用于单个应用程序。这是对它的正确使用吗?