Metody fabrykujące z companion object
Implementuj wzorce fabrykujące za pomocą companion object i operatora invoke.
Metody fabrykujące z companion object to bezpłatna lekcja Kotlin Academy na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Kotlin Academy, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Wzorzec metody fabrykującej
Prywatny konstruktor + fabryka
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()Nazwane metody fabrykujące
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)Zwracanie wartości null z fabryki
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")Buforowane instancje
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 jako fabryka przypominająca konstruktor
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 constructorFabryka abstrakcyjna z klasami sealed
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)
}
}Fabryka uwzględniająca zależności
class Repository(private val db: Database) {
companion object {
fun create(db: Database = Database.instance) = Repository(db)
}
fun findAll() = db.query("SELECT * FROM items")
}Fabryka w testach
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)
}
}Z JSON-u lub konfiguracji
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
)
}
}Kiedy NIE używać prywatnego konstruktora
Szybkie sprawdzenie
Podsumowanie
Często zadawane pytania
Czy lekcja „Metody fabrykujące z companion object” jest bezpłatna?
Tak — pełny tekst „Metody fabrykujące z companion object” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Kotlin Academy, przejdź na CoddyKit PRO. Kurs Kotlin Academy zawiera 4 lekcji w sumie.
Co nauczysz się w „Metody fabrykujące z companion object”?
Implementuj wzorce fabrykujące za pomocą companion object i operatora invoke. Ćwiczysz Kotlin Academy z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Kotlin Academy?
Nie wymagamy żadnego doświadczenia. Kotlin Academy w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Metody fabrykujące z companion object”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Kotlin Academy?
Tak. Każda lekcja Kotlin Academy zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Deklaracja object: singletony w Kotlinie
- companion object: elementy podobne do statycznych w Kotlinie
- Obiekty anonimowe i wyrażenia object
- Metody fabrykujące z companion object