Kotlin Academy · Ders

companion object ile Fabrika Yöntemleri

companion object ve invoke işleciyle fabrika kalıplarını uygulayın.

4. ders / 413 adım

companion object ile Fabrika Yöntemleri, CoddyKit'te ücretsiz bir Kotlin Academy dersidir. Bu, 4 dersinin 4. 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.

Fabrika Yöntemi Deseni

Fabrika yöntemleri, anlamlı adlara ve mantığa sahip nesneler oluşturarak oluşturucu karmaşıklığını gizler. Kotlin'de eşlikçi nesne, bu yöntemler için ideal yerdir.

Özel Oluşturucu + Fabrika

Oluşturucuyu özel yapın ve eşlikçi nesne aracılığıyla fabrika yöntemleri sağlayın.
class Token private constructor(val value: String) {
    companion object {
        fun generate() = Token(java.util.UUID.randomUUID().toString())
        fun fromString(s: String) = Token(s.trim())
    }
}
val t = Token.generate()

Adlandırılmış Fabrika Yöntemleri

Açıklayıcı adlar, oluşturucu aşırı yüklemelerinin aksine amacı netleştirir.
class Duration private constructor(val ms: Long) {
    companion object {
        fun ofMillis(ms: Long) = Duration(ms)
        fun ofSeconds(s: Long) = Duration(s * 1000)
        fun ofMinutes(m: Long) = Duration(m * 60_000)
    }
}
val d = Duration.ofMinutes(5)

Fabrikadan null Döndürme

Fabrikalar, hata fırlatmak yerine geçersiz girdiler için null döndürebilir.
class Percentage private constructor(val value: Int) {
    companion object {
        fun of(value: Int): Percentage? {
            return if (value in 0..100) Percentage(value) else null
        }
    }
}
val p = Percentage.of(75) ?: error("Invalid")

Önbelleğe Alınmış Örnekler

Fabrikalar örnekleri önbelleğe alıp yeniden kullanabilir.
class Direction private constructor(val name: String) {
    companion object {
        private val cache = mutableMapOf<String, Direction>()
        fun of(name: String) = cache.getOrPut(name.uppercase()) {
            Direction(name.uppercase())
        }
    }
}

Oluşturucu Benzeri Fabrika Olarak invoke Operatörü

Sınıfı işlev gibi çağırmak için invoke() tanımlayın.
class Email private constructor(val address: String) {
    companion object {
        operator fun invoke(raw: String): Email {
            require("@" in raw) { "Invalid email" }
            return Email(raw.lowercase())
        }
    }
}
val e = Email("Test@Example.com")  // looks like a constructor

Mühürlü Sınıflarla Soyut Fabrika

Tür güvenli oluşturma için fabrika yöntemlerini mühürlü sınıf hiyerarşileriyle birleştirin.
sealed class Shape {
    data class Circle(val r: Double) : Shape()
    data class Rect(val w: Double, val h: Double) : Shape()
    companion object {
        fun circle(r: Double) = Circle(r)
        fun rect(w: Double, h: Double) = Rect(w, h)
    }
}

Bağımlılık Farkında Fabrika

Fabrikalar bağımlılıkları kabul edip bunları birbirine bağlayabilir.
class Repository(private val db: Database) {
    companion object {
        fun create(db: Database = Database.instance) = Repository(db)
    }
    fun findAll() = db.query("SELECT * FROM items")
}

Testlerde Fabrika

Fabrika yöntemleri, test nesnesi oluşturmayı temiz ve açık hâle getirir.
class Order private constructor(
    val id: Long, val items: List<String>, val paid: Boolean
) {
    companion object {
        fun unpaid(id: Long, items: List<String>) = Order(id, items, false)
        fun paid(id: Long, items: List<String>) = Order(id, items, true)
    }
}

JSON/Yapılandırmadan

Fabrikalar, ayrıştırma için doğal giriş noktalarıdır.
class AppConfig private constructor(
    val baseUrl: String, val timeout: Int
) {
    companion object {
        fun fromEnv() = AppConfig(
            baseUrl = System.getenv("BASE_URL") ?: "http://localhost",
            timeout = System.getenv("TIMEOUT")?.toInt() ?: 30
        )
    }
}

Özel Oluşturucu Ne Zaman Kullanılmamalı

Oluşturucuları yalnızca biçim uğruna özel yapmayın. Şu durumlarda kullanın: doğrulama gerekiyorsa, önbelleğe alma gerekli oluyorsa veya birden çok oluşturma yolunun farklı anlamları varsa.

Hızlı Kontrol

Bir eşlikçi nesnenin oluşturucu gibi çağrılmasını sağlayan operatör işlevi hangisidir: Email("a@b.com")?

Özet

Eşlikçi nesnelerdeki fabrika yöntemleri: özel oluşturucu + adlandırılmış fabrikalar, isteğe bağlı null döndürme, önbelleğe alma ve oluşturucu benzeri söz dizimi için invoke(). Fabrikalar, nesne oluşturmayı güvenli, ifade gücü yüksek ve test edilebilir hâle getirir!
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

“companion object ile Fabrika Yöntemleri” dersi ücretsiz mi?

Evet — “companion object ile Fabrika Yöntemleri” 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.

“companion object ile Fabrika Yöntemleri” dersinde ne öğreneceğim?

companion object ve invoke işleciyle fabrika kalıplarını uygulayı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 4. dersidir.

“companion object ile Fabrika Yöntemleri” 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