KOTLIN · 객체지향
빌더 패턴 (Builder Pattern)
Kotlin의 명명된 인수와 기본값으로 빌더 패턴을 간결하게 구현합니다. apply 스코프 함수와 결합하면 더욱 깔끔합니다.
객체지향중급builder-patternfluent-apiapplymethod-chaining
핵심 설명
Kotlin의 명명된 인수와 기본값으로 빌더 패턴을 간결하게 구현합니다. apply 스코프 함수와 결합하면 더욱 깔끔합니다.
Kotlin code
class HttpRequest private constructor(
val url: String,
val method: String,
val headers: Map<String, String>,
val body: String?
) {
class Builder(private val url: String) {
private var method = "GET"
private val headers = mutableMapOf<String, String>()
private var body: String? = null
fun method(m: String) = apply { method = m }
fun header(key: String, value: String) = apply { headers[key] = value }
fun body(b: String) = apply { body = b }
fun build() = HttpRequest(url, method, headers, body)
}
override fun toString() = "$method $url
Headers: $headers
Body: $body"
}
fun main() {
val request = HttpRequest.Builder("https://api.example.com/users")
.method("POST")
.header("Content-Type", "application/json")
.header("Authorization", "Bearer token123")
.body("""{"name": "김철수"}""")
.build()
println(request)
}학습 팁
Kotlin에서는 data class + named arguments가 빌더 패턴을 대체할 수 있습니다. 복잡한 생성 로직이 있을 때만 빌더를 사용하세요.
주의할 점
빌더의 apply 메서드가 this(Builder)를 반환하는지 확인하세요. 반환하지 않으면 메서드 체이닝이 불가능합니다.
자주 묻는 질문
빌더 패턴 (Builder Pattern)란 무엇인가요?
Kotlin의 명명된 인수와 기본값으로 빌더 패턴을 간결하게 구현합니다. apply 스코프 함수와 결합하면 더욱 깔끔합니다.
빌더 패턴 (Builder Pattern) 학습 시 주의할 점은 무엇인가요?
빌더의 apply 메서드가 this (Builder)를 반환하는지 확인하세요. 반환하지 않으면 메서드 체이닝이 불가능합니다.
Continue Learning
Kotlin 학습을 이어가세요
총 200개의 독립 HTML 학습 문서 중 하나입니다. 각 문서는 고유 URL과 canonical 메타데이터를 가집니다.