상황: 쇼핑몰 앱에서 상품의 배송 상태를 나타내는 기능을 구현한다고 가정해 보겠습니다.
sealed class 정의
sealed class DeliveryStatus {
object Preparing : DeliveryStatus()
data class Shipped(val trackingNumber:String) : DeliveryStatus()
object Delivered : DeliveryStatus()
data class Failed(val reason: String) : DeliveryStatus()
}
DeliveryStatus sealed class는 상품의 배송 상태를 나타내는 네 가지 가능한 상태를 정의합니다.
- Preparing: 배송 준비 중
- Shipped: 배송 시작됨 (송장 번호 포함)
- Delivered: 배송 완료
- Failed: 배송 실패 (실패 사유 포함) sealed class 사용:
fun displayDeliveryStatus(status:DeliveryStatus) {
when (status) {
is DeliveryStatus.Preparing ->
println("상품 배송을 준비하고 있습니다.")
is DeliveryStatus.Shipped ->
println("상품이 배송되었습니다. 송장 번호: ${status.trackingNumber}")
is DeliveryStatus.Delivered ->
println("상품이 배송 완료되었습니다.")
is DeliveryStatus.Failed ->
println("상품 배송에 실패했습니다. 사유: ${status.reason}")
}
}
// 예시 사용
val currentStatus = DeliveryStatus.Shipped("1234567890")
displayDeliveryStatus(currentStatus) // 출력: 상품이 배송되었습니다. 송장 번호: 1234567890
displayDeliveryStatus 함수는 DeliveryStatus 객체를 입력으로 받아, 각 상태에 맞는 메시지를 출력합니다.
장점
- 명확성: sealed class를 사용하여 배송 상태를 명확하게 정의하고 관리할 수 있습니다.
- 안전성: when 문을 사용하여 모든 가능한 상태를 처리하므로, 예상치 못한 상태로 인한 오류를 방지할 수 있습니다.
- 확장성: 새로운 배송 상태가 추가되면 sealed class에 하위 클래스를 추가하여 쉽게 처리할 수 있습니다.
'프로그래밍 > Kotlin' 카테고리의 다른 글
[Kotlin] Tesseract를 이용한 OCR 기능 추가 (0) | 2024.02.21 |
---|---|
[Kotlin] Async vs Launch (Deffered vs Job) (0) | 2023.01.12 |
[Kotlin] 숫자 랜덤으로 출력 (0) | 2022.12.29 |
[Kotlin] ProgressBar 코드로 구현 (0) | 2022.12.15 |
[Kotlin] Java -> Kotlin Converting후 CustomDialog를 열때 Nullpointer Exception (0) | 2022.12.05 |
댓글