안드로이드

[코틀린] 코틀린 - 빌더패턴(Builder pattern)

이손안나 2022. 10. 2. 23:05

💡 빌더 패턴?

- 복합객체의 구성요소를 포함한 별도의 클래스를 만들고 이 클래슨느 구성요소를 조합하여 객체를 생성하는 역할을 함.

class Member {
    private var name: String = ""
    private var gender: String = ""
    private var age: Int = 0
    private var job: String = ""

    class Builder(
            // 필수 매개변수
            val name: String,
            val gender: String) {

        // 선택적 매개변수
        var age = 25
        var job = ""

        fun age(age: Int): Builder {
            this.age = age
            return this
        }

        fun job(job: String): Builder {
            this.job = job
            return this
        }

        fun build(): Member {
            return Member(this)
        }
    }

    // Builder 패턴 생성자
    constructor(builder: Builder) {
        name = builder.name
        gender = builder.gender
        age = builder.age
        job = builder.job
    }
}


// 생성

val member = Member.Builder("nayoung","여")
	.age(24)
    .job("학생")
    .build()

💡 빌더 패턴의 장점

  • 각 인자의 의미를 파악 하기 쉬움 (가독성)
  • 필수 매개변수, 선택 매개변수를 통해 객체를 생성할 때 보다 유연하게 사용 가능 (유연성)
// 필수 매개변수
val member = Member.Builder("nayoung","여")
	.build()
    
// 선택 매개변수
val member = Member.Builder("nayoung", "여") // 필수 인자
        .age(24) // 선택적 인자
        .build()

💡빌더 패턴 사용

  • 생성자 인자가 많을 경우 사용