В моем приложении Kotlin я имею дело с некоторыми типами членства.Например:
interface MembershipType {
fun getExcessOptions(): List
}
Производные типы: GOLD
, SILVER
, BRONZE
, PLATNIUM
Все 4 типа имеют список дополнительных параметров.Например:
enum class MembershipType(val name: String) : IValueOptions {
SILVER("silver") {
override fun getExcessOptions() = listOf(300,200,100)
}, //for GOLD, BRONZE, PLATNIUM etc
Для типов GOLD
и SILVER
их можно выбрать как Bundle
, поэтому у них должен быть список предопределенных valueOptions
, из которых можно выбрать.
Для BRONZE
, PLATNIUM
они могут быть только Named
, поэтому пользователь вводит собственное значение, у него есть выбор ..
В основном я хочу представить следующее:
MemeberShip Type || Options || Value Options
GOLD || Bundle || 100, 200, 3000
SILVER || Bundle and Named || 4000, 5000
PLATINUM || Named
BRONZE || Named
data class Bundle (
val excess: Int
val value: Int
)
data class Named (
val excess: Int
val value: Int
)
data class Selection(val bundle : Bundle?, val items : List<Named>)
Как я могу представить это в терминах классов и наследования в Kotlin или даже в виде перечислений, поскольку два типа уникальны в том смысле, что они имеют заранее определенное свойство valueOptions
?