[kotlin] 추상 팩토리 디자인 패턴과 코틀린

추상 팩토리 디자인 패턴은 객체 생성을 추상화하여 일련의 관련된 객체를 생성하는 데 유용한 디자인 패턴입니다. 코틀린에서 추상 팩토리 디자인 패턴을 적용하는 방법에 대해 알아보겠습니다.

추상 팩토리 디자인 패턴이란?

추상 팩토리 디자인 패턴은 “인터페이스를 통해 연관된 객체의 집합을 생성하는 인터페이스를 제공하는” 패턴입니다. 이를 통해 클라이언트는 구상 클래스를 지정하지 않고도 관련 객체의 집합을 생성할 수 있습니다.

코틀린에서의 추상 팩토리 구현

코틀린에서 추상 팩토리를 구현하는 예제를 살펴보겠습니다.

// 추상 팩토리 인터페이스
interface ShapeFactory {
    fun createCircle(): Shape
    fun createRectangle(): Shape
}

// 구상 팩토리 구현체
class ConcreteShapeFactory : ShapeFactory {
    override fun createCircle(): Shape {
        return Circle()
    }
    
    override fun createRectangle(): Shape {
        return Rectangle()
    }
}

// 추상 객체 인터페이스
interface Shape {
    fun draw()
}

// 구상 객체 구현체
class Circle : Shape {
    override fun draw() {
        println("원 그리기")
    }
}

class Rectangle : Shape {
    override fun draw() {
        println("사각형 그리기")
    }
}

// 클라이언트
fun main() {
    val shapeFactory: ShapeFactory = ConcreteShapeFactory()
    
    val circle: Shape = shapeFactory.createCircle()
    circle.draw()
    
    val rectangle: Shape = shapeFactory.createRectangle()
    rectangle.draw()
}

위의 예제에서, ShapeFactory 인터페이스는 createCircle()createRectangle() 메서드를 정의하고, 구상 팩토리는 해당 인터페이스를 구현합니다. Shape 인터페이스는 draw() 메서드를 정의하며, 구상 클래스인 CircleRectangle은 해당 인터페이스를 구현합니다.

결론

코틀린을 사용하여 추상 팩토리 디자인 패턴을 구현하는 것은 객체 생성을 추상화하여 유연하고 확장 가능한 코드를 작성할 수 있는 좋은 방법입니다. 추상 팩토리를 활용하여 관련된 객체 집합을 생성하는 디자인 패턴을 학습하여 보다 유지보수 가능하고 효율적인 소프트웨어를 개발할 수 있습니다.

References