포스트

Proxy Pattern (디자인 패턴 13장)

Proxy Pattern (디자인 패턴 13장)

Proxy Pattern (디자인 패턴 13장)

프록시 패턴 정의

어떤 객체에 대한 접근을 제어하기 위한 용도로 대리인이나 대변인에 해당하는 객체를 제공하는 패턴이다.

프록시 패턴 언제 사용할까!?

원격 프록시 , 가상 프록시 , 보호 프록시 여러가지가 있는데 가상 프록시를 다뤄보자.
네트워크를 통해 이미지를 가져온다고 가정할 때 네트워크 상태와 인터넷 연결 속도에 따라서 시간 소요 되게 된다.
이때 이미지를 불러 오는 동안 Proxy를 사용해서 임의의 이미지를 보여준 다음 실제 이미지를 보여줄 수 있다.
아래 코드를 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
class ProxyPattern {
    @Test
    fun test() {
        ImageProxy().showIcon()
    }
}

interface Icon {
    fun showIcon()
}

class ImageIcon : Icon {

    override fun showIcon() {
        download()
        println("ImageIcon 그림")
    }

    private fun download() {
        println("ImageIcon 다운로드")
    }

}

class ImageProxy : Icon {
    var imageIcon: ImageIcon? = null

    override fun showIcon() {
        println("ImageProxy 그림")
        imageIcon = ImageIcon()
        imageIcon?.showIcon()
    }
}

ImageProxy 를 통해 showIcon 메소드를 호출 하게 되면 프록시 임의의 그림을 보여주고 다운로드가 되었을때 실제 이미지 ImageIcon 그림을 보여줄 수 있다.

아래는 테스트 결과이다.

이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.