[swift] Factory 디자인 패턴으로 객체 생성 시 유연성 확보

소프트웨어 개발에서 객체 생성을 유연하게 처리하고자 할 때, Factory 디자인 패턴은 유용한 도구로 활용됩니다. 이 패턴은 생성되는 객체의 유형에 따라 적절한 클래스 인스턴스를 반환하는 메커니즘을 제공하여 소스 코드의 유지보수성과 확장성을 향상시킵니다.

Factory 디자인 패턴이란?

Factory 디자인 패턴은 객체 생성을 캡슐화하여 클라이언트 코드가 생성되는 객체의 유형을 명시적으로 알 필요 없이 인스턴스를 생성할 수 있도록 하는 패턴입니다. 이를 통해 변경이나 유닛 테스트 시에도 코드의 수정 없이 객체 생성을 다룰 수 있습니다.

Factory 디자인 패턴의 장점

Swift에서의 Factory 디자인 패턴 구현

protocol Shape {
    func draw()
}

class Circle: Shape {
    func draw() {
        print("Circle: draw()")
    }
}

class Rectangle: Shape {
    func draw() {
        print("Rectangle: draw()")
    }
}

class ShapeFactory {
    func createShape(type: String) -> Shape? {
        switch type {
        case "circle":
            return Circle()
        case "rectangle":
            return Rectangle()
        default:
            return nil
        }
    }
}

let factory = ShapeFactory()
let circle = factory.createShape(type: "circle")
circle?.draw()

위 예제에서 ShapeFactory는 Shape 프로토콜을 따르는 객체를 생성하는 역할을 합니다. 클라이언트에서는 필요한 도형의 타입을 지정하여 ShapeFactory를 통해 객체를 생성할 수 있습니다.

결론

Factory 디자인 패턴은 객체 생성을 유연하게 관리하고자 할 때 매우 유용한 도구입니다. 이를 통해 코드의 유지보수성을 높이고 확장성을 강화할 수 있으며, Swift와 같은 현대적인 언어에서도 적절히 활용될 수 있습니다.

참고 문헌: