Kotlin Academy · Pelajaran

Metode Factory dengan companion object

Terapkan pola factory menggunakan companion object dan operator invoke.

Pelajaran 4 dari 413 langkah

Metode Factory dengan companion object adalah pelajaran Kotlin Academy gratis di CoddyKit. Ini adalah pelajaran 4 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Kotlin Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Kotlin Academy mencakup 4 pelajaran total.

Pola Metode Pabrik

Metode pabrik membuat objek dengan nama dan logika yang bermakna, sekaligus menyembunyikan kompleksitas konstruktor. Objek pendamping Kotlin adalah tempat yang ideal untuk metode tersebut.

Konstruktor Privat + Pabrik

Jadikan konstruktor privat dan sediakan metode pabrik melalui objek pendamping.
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()

Metode Pabrik Bernama

Nama deskriptif memperjelas maksud—berbeda dari kelebihan beban konstruktor.
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)

Mengembalikan Null dari Pabrik

Pabrik dapat mengembalikan null untuk masukan yang tidak valid, alih-alih melemparkan pengecualian.
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")

Instans yang Di-cache

Pabrik dapat menyimpan instans dalam cache dan menggunakannya kembali.
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())
        }
    }
}

Operator invoke sebagai Pabrik Mirip Konstruktor

Definisikan invoke() agar kelas dapat dipanggil seperti fungsi.
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

Pabrik Abstrak dengan Kelas Sealed

Gabungkan metode pabrik dengan hierarki kelas sealed untuk pembuatan bertipe.
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)
    }
}

Pabrik yang Sadar Dependensi

Pabrik dapat menerima dependensi dan menghubungkannya.
class Repository(private val db: Database) {
    companion object {
        fun create(db: Database = Database.instance) = Repository(db)
    }
    fun findAll() = db.query("SELECT * FROM items")
}

Pabrik dalam Pengujian

Metode pabrik membuat pembuatan objek pengujian menjadi rapi dan eksplisit.
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)
    }
}

Dari JSON/Config

Pabrik merupakan titik masuk alami untuk penguraian.
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
        )
    }
}

Kapan NOT Menggunakan Konstruktor Privat

Jangan menjadikan konstruktor privat hanya demi gaya. Gunakan jika validasi diperlukan, cache dibutuhkan, atau beberapa jalur pembuatan memiliki semantik yang berbeda.

Pemeriksaan Singkat

Fungsi operator apa yang memungkinkan pemanggilan objek pendamping seperti konstruktor: Email("a@b.com")?

Rangkuman

Metode pabrik dalam objek pendamping: konstruktor privat + pabrik bernama, pengembalian null opsional, caching, dan invoke() untuk sintaks mirip konstruktor. Pabrik membuat pembuatan objek menjadi aman, ekspresif, dan mudah diuji!
Gratis untuk memulai

Belajar Kotlin dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
51
Pelajaran
203

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Metode Factory dengan companion object” gratis?

Ya — teks lengkap “Metode Factory dengan companion object” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Kotlin Academy, upgrade ke CoddyKit PRO. Kursus Kotlin Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Metode Factory dengan companion object”?

Terapkan pola factory menggunakan companion object dan operator invoke. Kamu berlatih Kotlin Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Kotlin Academy?

Tidak diperlukan pengalaman sebelumnya. Kotlin Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 4 dari 4.

Berapa lama pelajaran “Metode Factory dengan companion object” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Kotlin Academy ini?

Ya. Setiap pelajaran Kotlin Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Deklarasi object: Singleton Kotlin
  2. companion object: Anggota Bergaya Statis di Kotlin
  3. Objek Anonim dan Ekspresi Object
  4. Metode Factory dengan companion object
← Kembali ke Kotlin Academy