การประกาศ object: Singleton ของ Kotlin
สร้าง singleton ด้วย object และทำความเข้าใจวงจรชีวิต
การประกาศ object: Singleton ของ Kotlin เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
object ในฐานะซิงเกิลตัน
การประกาศ object จะสร้างอินสแตนซ์เดียว ซึ่งเป็นซิงเกิลตันที่ปลอดภัยต่อเธรดและเริ่มต้นแบบขี้เกียจได้ด้วยโค้ดเพียงบรรทัดเดียว
การประกาศซิงเกิลตัน
ใช้ object Name { ... } เพื่อประกาศซิงเกิลตันที่มีสถานะและเมธอด
object Logger {
fun log(msg: String) = println("[LOG] $msg")
}
fun main() {
Logger.log("App started")
Logger.log("User signed in")
}สถานะของซิงเกิลตัน
ซิงเกิลตันสามารถเก็บสถานะที่แก้ไขได้ ซึ่งเข้าถึงได้จากทุกที่และใช้ร่วมกันทั่วทั้งโปรแกรม
object Counter {
var count = 0
fun increment() { count++ }
}
fun main() {
Counter.increment()
Counter.increment()
Counter.increment()
println(Counter.count) // 3
}การเริ่มต้นแบบขี้เกียจ
อินสแตนซ์เดียวจะถูกสร้างขึ้นเมื่อมีการเข้าถึงครั้งแรกเท่านั้น ไม่เคยสร้างเร็วกว่านั้น JVM รับประกันว่าการทำงานนี้ปลอดภัยต่อเธรด
object Heavy {
init { println("Initializing Heavy...") }
fun work() = "done"
}
fun main() {
println("Before access")
println(Heavy.work()) // triggers init now
println(Heavy.work()) // no init again
}การใช้งานส่วนติดต่อ
ซิงเกิลตันสามารถใช้งานส่วนติดต่อได้ ซึ่งมีประโยชน์สำหรับการเรียกกลับและกลยุทธ์
interface Greeter { fun greet(name: String): String }
object EnglishGreeter : Greeter {
override fun greet(name: String) = "Hello, $name!"
}
fun main() {
println(EnglishGreeter.greet("Ada"))
}การสืบทอดคลาส
ออบเจ็กต์สามารถสืบทอดจากคลาสที่เปิดให้สืบทอดได้เช่นกัน
open class Animal(val sound: String) {
fun makeSound() = "The animal says $sound"
}
object Cat : Animal("Meow")
fun main() {
println(Cat.makeSound())
}การใช้งานจริง: การกำหนดค่า
ซิงเกิลตันเหมาะอย่างยิ่งสำหรับการกำหนดค่าทั่วทั้งแอปที่ไม่เปลี่ยนแปลงหลังเริ่มต้นระบบ
object AppConfig {
val apiUrl = "https://api.example.com"
val timeout = 5000
val version = "1.0.0"
}
fun main() {
println("v${AppConfig.version} -> ${AppConfig.apiUrl}")
}การใช้งานจริง: ฟังก์ชันอรรถประโยชน์
จัดกลุ่มตัวช่วยที่ไม่มีสถานะซึ่งเกี่ยวข้องกันไว้ใน object ในรูปแบบเมธอดคล้ายแบบคงที่ที่มีเนมสเปซ
object StringUtils {
fun reverse(s: String) = s.reversed()
fun capitalize(s: String) = s.replaceFirstChar { it.uppercase() }
}
fun main() {
println(StringUtils.reverse("Kotlin"))
println(StringUtils.capitalize("hello"))
}ความเท่ากันและเอกลักษณ์
มีอินสแตนซ์เพียงหนึ่งเดียว ดังนั้น === จึงคืนค่าเป็น true เสมอสำหรับการอ้างอิงออบเจ็กต์เดียวกัน
object MySingleton
fun main() {
val a = MySingleton
val b = MySingleton
println(a === b) // true
}object เทียบกับคลาส
class ทั่วไปต้องสร้างอินสแตนซ์ ส่วน object คือตัวอินสแตนซ์เอง จึงไม่มีการเรียกใช้ตัวสร้าง
class Service { fun ping() = "pong (class)" }
object SingletonService { fun ping() = "pong (object)" }
fun main() {
val s = Service() // instance per call
println(s.ping())
println(SingletonService.ping()) // no instantiation
}ความปลอดภัยของเธรด
การสร้างอินสแตนซ์ของซิงเกิลตันปลอดภัยต่อเธรดตามการรับประกันของการโหลดคลาสโดย JVM ส่วนสถานะที่แก้ไขได้ซึ่งคุณเพิ่มไว้ภายในนั้นเป็นความรับผิดชอบของคุณ
object SharedCounter {
@Volatile var count = 0
@Synchronized fun inc() { count++ }
}
fun main() {
repeat(1000) { SharedCounter.inc() }
println(SharedCounter.count) // 1000
}ตรวจสอบอย่างรวดเร็ว
การประกาศ object ของ Kotlin มีอินสแตนซ์อยู่กี่ตัว
สรุปทบทวน
object Name { ... } ประกาศซิงเกิลตันที่เริ่มต้นแบบขี้เกียจและปลอดภัยต่อเธรด พร้อมสถานะ เมธอด ส่วนติดต่อ และการสืบทอด ใช้ออบเจ็กต์สำหรับการกำหนดค่า กลุ่มฟังก์ชันอรรถประโยชน์ และบริการที่ไม่มีสถานะ
คำถามที่พบบ่อย
บทเรียน “การประกาศ object: Singleton ของ Kotlin” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การประกาศ object: Singleton ของ Kotlin” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การประกาศ object: Singleton ของ Kotlin”
สร้าง singleton ด้วย object และทำความเข้าใจวงจรชีวิต คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน
บทเรียน “การประกาศ object: Singleton ของ Kotlin” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การประกาศ object: Singleton ของ Kotlin
- companion object: สมาชิกคล้าย Static ใน Kotlin
- ออบเจ็กต์นิรนามและนิพจน์ออบเจ็กต์
- เมธอด Factory ด้วย companion object