Kotlin Academy · Ders

object Bildirimi: Kotlin Singleton'ları

object ile singleton'lar oluşturun ve yaşam döngülerini anlayın.

1. ders / 413 adım

object Bildirimi: Kotlin Singleton'ları, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Kotlin Academy öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Kotlin Academy kursu toplamda 4 dersten oluşur.

Singleton olarak object

Bir object bildirimi, tek satır kodla tek bir örnek (iş parçacığı açısından güvenli ve lazy başlatılan bir singleton) oluşturur.

Singleton Tanımlama

Durum ve yöntemlere sahip bir singleton tanımlamak için object Name { ... } kullanın.

object Logger {
    fun log(msg: String) = println("[LOG] $msg")
}
fun main() {
    Logger.log("App started")
    Logger.log("User signed in")
}

Singleton Durumu

Singleton'lar değiştirilebilir durum tutabilir; bu duruma her yerden erişilebilir ve durum genel olarak paylaşılır.

object Counter {
    var count = 0
    fun increment() { count++ }
}
fun main() {
    Counter.increment()
    Counter.increment()
    Counter.increment()
    println(Counter.count) // 3
}

Lazy Başlatma

Tek örnek, ona ilk kez erişildiğinde oluşturulur; daha önce oluşturulmaz. JVM bunun iş parçacığı açısından güvenli olduğunu garanti eder.

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
}

Arayüzleri Uygulama

Singleton'lar, geri çağırmalar ve stratejiler için kullanışlı olan arayüzleri uygulayabilir.

interface Greeter { fun greet(name: String): String }
object EnglishGreeter : Greeter {
    override fun greet(name: String) = "Hello, $name!"
}
fun main() {
    println(EnglishGreeter.greet("Ada"))
}

Sınıf Genişletme

object'ler açık sınıflardan da kalıtım alabilir.

open class Animal(val sound: String) {
    fun makeSound() = "The animal says $sound"
}
object Cat : Animal("Meow")
fun main() {
    println(Cat.makeSound())
}

Uygulamalı: Yapılandırma

Singleton'lar, başlangıçtan sonra değişmeyen uygulama genelindeki yapılandırmalar için idealdir.

object AppConfig {
    val apiUrl = "https://api.example.com"
    val timeout = 5000
    val version = "1.0.0"
}
fun main() {
    println("v${AppConfig.version} -> ${AppConfig.apiUrl}")
}

Uygulamalı: Yardımcı İşlevler

İlişkili durum bilgisi tutmayan yardımcıları bir object içinde ad alanlı, statik benzeri yöntemler olarak gruplayın.

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"))
}

Eşitlik ve Kimlik

Yalnızca bir örnek olduğundan, aynı nesne başvurusu için === her zaman true döndürür.

object MySingleton
fun main() {
    val a = MySingleton
    val b = MySingleton
    println(a === b) // true
}

object ve class Karşılaştırması

Normal bir class örneklenmeyi gerektirir. Bir object zaten örneğin kendisidir; oluşturucu çağrısı yapılmaz.

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
}

İş Parçacığı Güvenliği

Singleton örneğinin oluşturulması, JVM'nin sınıf yükleme garantileri sayesinde iş parçacığı açısından güvenlidir. İçine eklediğiniz değiştirilebilir durumun sorumluluğu size aittir.

object SharedCounter {
    @Volatile var count = 0
    @Synchronized fun inc() { count++ }
}
fun main() {
    repeat(1000) { SharedCounter.inc() }
    println(SharedCounter.count) // 1000
}

Hızlı Kontrol

Bir Kotlin object bildiriminin kaç örneği vardır?

Özet

object Name { ... }; durum, yöntemler, arayüzler ve kalıtım içeren, iş parçacığı açısından güvenli bir lazy singleton tanımlar. Yapılandırma, yardımcı grupları ve durum bilgisi tutmayan hizmetler için object'leri kullanın.

Başlamak ücretsiz

Yapay zeka eğitmeniyle Kotlin öğren — ücretsiz

Tarayıcında gerçek kod yaz ve çalıştır, 7/24 yapay zeka eğitmeninden anında yardım al; web'de ya da uygulamada kaldığın yerden devam et.

Kurslar
51
Dersler
203

Sıkça Sorulan Sorular

“object Bildirimi: Kotlin Singleton'ları” dersi ücretsiz mi?

Evet — “object Bildirimi: Kotlin Singleton'ları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Kotlin Academy kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Kotlin Academy kursu toplamda 4 dersten oluşur.

“object Bildirimi: Kotlin Singleton'ları” dersinde ne öğreneceğim?

object ile singleton'lar oluşturun ve yaşam döngülerini anlayın. Kotlin Academy ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Kotlin Academy öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Kotlin Academy, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“object Bildirimi: Kotlin Singleton'ları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Kotlin Academy dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Kotlin Academy dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. object Bildirimi: Kotlin Singleton'ları
  2. companion object: Kotlin'de Statik Benzeri Üyeler
  3. Adsız Nesneler ve Nesne İfadeleri
  4. companion object ile Fabrika Yöntemleri
← Kotlin Academy Sayfasına Dön