[swift] 클래스의 프록시(Proxy) 패턴 사용 방법

프록시(Proxy) 패턴은 객체지향 프로그래밍에서 사용되는 디자인 패턴 중 하나로, 다른 객체에 대한 접근을 제어하기 위한 용도로 사용됩니다.

프록시 패턴을 사용하여 다른 객체에 대한 접근을 제어하면 객체의 생성 및 소멸 등의 작업을 제어할 수 있으며, 객체의 사용을 감시하거나 필요에 따라 추가적인 작업을 수행할 수 있습니다.

프록시(Proxy) 패턴의 사용 방법

다음은 Swift에서 프록시 패턴을 사용하는 간단한 예제입니다.

// 프로토콜
protocol Image {
    func display()
}

// 실제 이미지
class RealImage: Image {
    let filename: String

    init(filename: String) {
        self.filename = filename
        loadFromDisk()
    }

    func display() {
        print("Displaying \(filename)")
    }

    private func loadFromDisk() {
        print("Loading \(filename) from disk")
    }
}

// 이미지 프록시
class ImageProxy: Image {
    let filename: String
    lazy var image: RealImage = RealImage(filename: "")

    init(filename: String) {
        self.filename = filename
    }

    func display() {
        print("Displaying \(filename)")
        image.display()
    }
}

// 사용 예
let image1 = ImageProxy(filename: "testImage.jpg")
image1.display()

위 예제에서, Image 프로토콜을 정의하여 RealImageImageProxy 클래스가 해당 프로토콜을 따르도록 합니다. 프록시 클래스 ImageProxy 내에서는 실제 이미지 객체를 생성하기 전까지 해당 객체를 사용하지 않도록 하여, 실제 이미지 객체의 생성 및 초기화를 지연시킬 수 있습니다.

프록시 패턴은 객체의 생성 및 초기화를 지연시키기 위한 데모 객체나 객체의 복잡한 초기화 작업 등을 처리하는 데에 유용하게 사용될 수 있습니다.

참고 자료: