กรณีการใช้งาน
การสร้างแบบจำลองโดเมน
กรณีการใช้งาน เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
การจำลองโดเมน
คลาสค่าเหมาะอย่างยิ่งกับการจำลองโดเมน คลาสค่าเปลี่ยนค่าพื้นฐานที่ไม่มีความหมายเฉพาะให้เป็นชนิดข้อมูลที่มีความหมายและช่วยป้องกันข้อผิดพลาด โดยไม่เพิ่มต้นทุนขณะทำงาน
มาดูสถานการณ์ที่พบได้จริงกัน
รหัสที่มีชนิดข้อมูล
ชนิดรหัสที่แยกกันช่วยป้องกันการส่งรหัสผู้ใช้ไปยังตำแหน่งที่ต้องใช้รหัสคำสั่งซื้อ ซึ่งเป็นข้อผิดพลาดที่พบได้บ่อยและมีค่าใช้จ่ายสูง
@JvmInline
value class UserId(val value: Long)
@JvmInline
value class OrderId(val value: Long)
fun fetchUser(id: UserId) = "user " + id.value
fun main() {
println(fetchUser(UserId(7)))
}หน่วยวัด
การห่อหุ้มตัวเลขด้วยชนิดหน่วยวัดช่วยป้องกันการนำเมตรไปบวกกับวินาทีโดยไม่ตั้งใจ และยังบอกความหมายของค่าไว้อย่างชัดเจน
@JvmInline
value class Kilograms(val value: Double)
fun describe(weight: Kilograms) = weight.value.toString() + " kg"
fun main() {
println(describe(Kilograms(72.5)))
}สตริงที่ผ่านการตรวจสอบ
ใช้คลาสค่าร่วมกับบล็อก init เพื่อรับประกันเงื่อนไขคงที่ เช่น อีเมลที่ไม่เว้นว่าง
@JvmInline
value class Email(val value: String) {
init {
require(value.contains("@")) { "invalid email" }
}
}
fun main() {
println(Email("a@b.com").value)
}เงินที่มีพฤติกรรม
แทนจำนวนเงินด้วยหน่วยย่อยที่สุดและเพิ่มการดำเนินการต่าง ๆ เพื่อหลีกเลี่ยงข้อผิดพลาดของสกุลเงินจากเลขทศนิยมลอยตัว
@JvmInline
value class Cents(val value: Long) {
operator fun plus(other: Cents) = Cents(value + other.value)
fun format() = "$" + value / 100.0
}
fun main() {
val total = Cents(1500) + Cents(250)
println(total.format())
}ส่วนติดต่อที่อธิบายตัวเอง
ลายเซ็นฟังก์ชันที่ใช้คลาสค่ามีความชัดเจนกว่าลายเซ็นที่ใช้จำนวนเต็มสามตัวแบบไม่มีความหมายกำกับมาก
@JvmInline
value class Width(val px: Int)
@JvmInline
value class Height(val px: Int)
fun area(w: Width, h: Height) = w.px * h.px
fun main() {
println(area(Width(4), Height(5)))
}การห่อหุ้มข้อมูลสำคัญ
คลาสค่าสามารถแทนที่ toString เพื่อปกปิดข้อมูลลับในบันทึกการทำงาน ขณะเดียวกันก็ยังเข้าถึงค่าดิบได้
@JvmInline
value class Token(val value: String) {
override fun toString() = "Token(***)"
}
fun main() {
val t = Token("abc123")
println(t) // masked
println(t.value) // real value when needed
}การบังคับใช้ช่วงค่า
ใช้คลาสค่าเพื่อรวมกฎของช่วงค่าไว้ในที่เดียว ทำให้ไม่สามารถสร้างสถานะที่ไม่ถูกต้องได้จากทุกจุด
@JvmInline
value class Rating(val stars: Int) {
init {
require(stars in 1..5) { "stars must be 1..5" }
}
}
fun main() {
println(Rating(4).stars)
}ตัวสร้างอัจฉริยะ
จับคู่คลาสค่ากับโรงงานในออบเจ็กต์ร่วมที่คืนค่า null เมื่ออินพุตไม่ถูกต้อง เพื่อหลีกเลี่ยงข้อยกเว้นสำหรับความล้มเหลวที่คาดหมายได้
@JvmInline
value class Age(val value: Int) {
companion object {
fun of(n: Int): Age? = if (n in 0..150) Age(n) else null
}
}
fun main() {
println(Age.of(30)?.value)
println(Age.of(-5))
}สรุปรูปแบบการใช้งาน
รูปแบบการใช้คลาสค่าที่พบบ่อย:
- รหัสที่มีชนิดข้อมูลเพื่อป้องกันการสับสน
- หน่วยวัด
- ค่าพื้นฐานที่ผ่านการตรวจสอบด้วย
init - การดำเนินการของโดเมนผ่านตัวดำเนินการ
- ค่าข้อมูลสำคัญที่ถูกปกปิด
ความปลอดภัยที่แทบไม่เสียต้นทุน
เนื่องจากคลาสค่ามักถูกแทรกค่าไว้โดยตรง คุณจึงได้ทั้งความชัดเจนและความปลอดภัยของโดเมนทั้งหมดนี้ โดยแทบไม่เสียต้นทุนขณะทำงาน คลาสค่าเป็นวิธีที่ปรับใช้ได้ง่ายในการทำให้สถานะที่ไม่ถูกต้องไม่สามารถแทนค่าได้
ตรวจสอบความเข้าใจ
ทดสอบความเข้าใจเกี่ยวกับกรณีการใช้งานคลาสค่า
ทบทวน
คุณได้เห็นกรณีการใช้งานคลาสค่าในทางปฏิบัติ:
- รหัสที่มีชนิดข้อมูล หน่วยวัด และสตริงที่ผ่านการตรวจสอบ
- เงินและการดำเนินการของโดเมน
- การปกปิดข้อมูลลับและตัวสร้างอัจฉริยะ
ถัดไป: ข้อจำกัดของคลาสค่า
คำถามที่พบบ่อย
บทเรียน “กรณีการใช้งาน” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “กรณีการใช้งาน” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “กรณีการใช้งาน”
การสร้างแบบจำลองโดเมน คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน
บทเรียน “กรณีการใช้งาน” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ชื่อแทนชนิดข้อมูล
- คลาสค่าแบบอินไลน์
- กรณีการใช้งาน
- ข้อจำกัด