[swift] 클래스의 빌더(Builder) 패턴 활용

클래스의 빌더(Builder) 패턴은 객체의 생성 과정을 추상화하여 복잡한 객체를 만들기 위해 사용됩니다. 이 패턴을 활용하면 객체 생성에 필요한 매개변수들을 논리적 단계에 따라 전달하고, 객체를 구성하고 반환하는 로직을 분리할 수 있습니다.

빌더(Builder) 패턴 예시

class Person {
    let name: String
    let age: Int
    let address: String
    let phoneNumber: String

    init(builder: PersonBuilder) {
        self.name = builder.name
        self.age = builder.age
        self.address = builder.address
        self.phoneNumber = builder.phoneNumber
    }
}

class PersonBuilder {
    var name: String = ""
    var age: Int = 0
    var address: String = ""
    var phoneNumber: String = ""

    func withName(_ name: String) -> PersonBuilder {
        self.name = name
        return self
    }

    func withAge(_ age: Int) -> PersonBuilder {
        self.age = age
        return self
    }

    func withAddress(_ address: String) -> PersonBuilder {
        self.address = address
        return self
    }

    func withPhoneNumber(_ phoneNumber: String) -> PersonBuilder {
        self.phoneNumber = phoneNumber
        return self
    }

    func build() -> Person {
        return Person(builder: self)
    }
}

위의 예시에서 PersonBuilder 클래스는 Person 객체를 생성하는 데 사용됩니다. 각각의 with 메서드는 해당 필드 값을 설정하고, build 메서드는 최종적으로 Person 객체를 생성합니다.

빌더(Builder) 패턴의 장점

빌더(Builder) 패턴을 활용하면 여러 개의 선택적 매개변수를 가진 객체를 생성할 때 매우 유용합니다. 객체에 필요한 매개변수 수가 많거나 조합이 복잡한 경우, 빌더 패턴을 사용하여 객체를 생성하면 코드의 가독성과 유연성이 향상됩니다.

요약

빌더(Builder) 패턴은 객체의 생성 과정을 모델링하고 객체를 생성하는 데 필요한 논리적인 순서를 제공하는 데 유용합니다. 이 패턴은 복잡한 객체를 만들 때 코드의 가독성과 유지보수성을 향상시키며, 선택적인 매개변수를 가진 객체의 생성을 단순화합니다.

참고 자료: