[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
프로토콜을 정의하여 RealImage
및 ImageProxy
클래스가 해당 프로토콜을 따르도록 합니다. 프록시 클래스 ImageProxy
내에서는 실제 이미지 객체를 생성하기 전까지 해당 객체를 사용하지 않도록 하여, 실제 이미지 객체의 생성 및 초기화를 지연시킬 수 있습니다.
프록시 패턴은 객체의 생성 및 초기화를 지연시키기 위한 데모 객체나 객체의 복잡한 초기화 작업 등을 처리하는 데에 유용하게 사용될 수 있습니다.
참고 자료: