在这段生成的支付状态代码成为公开应用模型前审查它。
保持状态层级封闭,生成不含秘密的公开状态,并且只重试网络失败。
kotlin
sealed interface PaymentState
data object Idle : PaymentState
data object Processing : PaymentState
data class Paid(val receiptId: String, val paymentToken: String) : PaymentState
open class Failed(val message: String) : PaymentState
class NetworkFailed(message: String) : Failed(message)
fun render(state: PaymentState): String {
return when (state) {
Idle -> "idle"
Processing -> "processing"
is Paid -> "paid ${state.receiptId} with ${state.paymentToken}"
else -> "failed"
}
}
fun shouldRetry(state: PaymentState): Boolean =
state::class.simpleName?.contains("Network") == true
fun main() {
val state = Paid("R-9", "tok_live_123")
println(render(state))
}
生成代码仅作示例,不代表任何特定模型