我有两种类型的用户:标准用户和高级用户。我想根据用户类型显示不同的数据,例如不同的支持号码、卡片视图的颜色。我可以将其作为某些配置文件或区域设置或任何其他解决方案的一部分吗? 我不想在整个应用程序中添加 if 条件。这需要在运行时更改,因此排除了口味。
我相信这可以通过创建一个结构来在运行时在实例之间切换来完成。
创建一个conf类来保存支持号码和卡片视图颜色等数据。
data class Configuration(
val supportNumber: String,
val cardViewColor: Int
)
创建一个
ConfigManager
来保存当前配置。它还可以根据您所说的用户类型更改当前配置。
object ConfigManager {
var currentConfig: Configuration = Configuration(
supportNumber = "default",
cardViewColor = R.color.defaultColor
)
fun setConfig(userType: UserType) {
currentConfig =
if (userType == UserType.STANDARD) {
Configuration(
supportNumber = "standard_support_number",
cardViewColor = R.color.standardColor
)
}
else {
Configuration(
supportNumber = "premium_support_number",
cardViewColor = R.color.premiumColor
)
}
}
}
enum class UserType {
STANDARD,
PREMIUM
}
应用启动时根据用户类型设置配置。
class MainActivity : AppCompatActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
val userType = UserType.PREMIUM
ConfigManager.setConfig(userType)
}
}
当您需要在应用程序中使用支持号码或卡片视图颜色时,请使用当前配置中的值。
val supportNumber = ConfigManager.currentConfig.supportNumber
val cardViewColor = ConfigManager.currentConfig.cardViewColor
这使您可以根据用户类型更改用户体验,而无需在整个应用程序中分散条件。相反,您只需在开始时设置配置,然后在应用程序中的其他任何地方都引用当前配置。