data class SpecialTypeContract(
val value: BigDecimal,
val excess: BigDecimal
)
data class CustomerContract(
val name: String,
val value: BigDecimal,
val specialType: SpecialTypeContract?,
val itemContracts: List<ItemContract>
)
data class ItemContract(
val name: String,
val value: BigDecimal,
val excess: BigDecimal
)
Category | options
TypeA | Special
TypeB | item and special
TypeC | item
TypeD | item
В моем приложении я разрешаю покупателям покупать CustomerContract
, который может иметь коллекцию ItemContract
и / или SpecialTypeContract
.
Я поддерживаю много категорий A ... D, и это может расти.Для каждой из категорий я определяю, доступны ли они как SpecialTypeContract
или как ItemContract
.
Для каждой из вышеперечисленных категорий есть набор из excess
опций на выбор, т. Е. 300, 800, 1000. Категории также могут иметь уровни rate/interest
, например, 0,1, 2,1 и т. Д.
У меня вопрос: есть ли шаблон проектирования, который я могу использовать для представления этой связи между категориями и контрактами, которые у меня есть Special
и Item
?
Как мне представить эти categories types A...D
и предоставить какие варианты они доступны для клиентов?Должен ли я использовать структуру данных или некоторую иерархию классов, учитывая, что список типов может увеличиться позже и иметь такие свойства, как доступный набор избытка и процент / процент?