PHpullh
학습 라이브러리/Kotlin/빌더 패턴 (Builder Pattern)

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)를 반환하는지 확인하세요. 반환하지 않으면 메서드 체이닝이 불가능합니다.