เมธอด Factory ด้วย companion object
นำรูปแบบ factory ไปใช้ด้วย companion object และตัวดำเนินการ invoke
เมธอด Factory ด้วย companion object เป็นบทเรียน Kotlin Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Kotlin Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
รูปแบบเมธอดโรงงาน
ตัวสร้างส่วนตัวและโรงงาน
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()เมธอดโรงงานที่มีชื่อสื่อความหมาย
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)การส่งคืนค่า null จากโรงงาน
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")อินสแตนซ์ที่แคชไว้
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())
}
}
}โอเปอเรเตอร์ invoke ในฐานะโรงงานคล้ายตัวสร้าง
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โรงงานนามธรรมกับคลาสแบบปิด
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)
}
}โรงงานที่รองรับสิ่งพึ่งพา
class Repository(private val db: Database) {
companion object {
fun create(db: Database = Database.instance) = Repository(db)
}
fun findAll() = db.query("SELECT * FROM items")
}โรงงานในการทดสอบ
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/การตั้งค่า
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
)
}
}เมื่อใดไม่ควรใช้ตัวสร้างส่วนตัว
ตรวจสอบอย่างรวดเร็ว
สรุปทบทวน
คำถามที่พบบ่อย
บทเรียน “เมธอด Factory ด้วย companion object” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “เมธอด Factory ด้วย companion object” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Kotlin Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Kotlin Academy มีบทเรียนทั้งหมด 4 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “เมธอด Factory ด้วย companion object”
นำรูปแบบ factory ไปใช้ด้วย companion object และตัวดำเนินการ invoke คุณปฏิบัติ Kotlin Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Kotlin Academy หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Kotlin Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน
บทเรียน “เมธอด Factory ด้วย companion object” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Kotlin Academy นี้ได้ไหม
ได้ บทเรียน Kotlin Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การประกาศ object: Singleton ของ Kotlin
- companion object: สมาชิกคล้าย Static ใน Kotlin
- ออบเจ็กต์นิรนามและนิพจน์ออบเจ็กต์
- เมธอด Factory ด้วย companion object