티스토리 뷰

발생일: 2011.06.01

문제:
처음 디자인 패턴을 공부할 당시 프록시 패턴과 데코레이터 패턴을 꽤 헷갈려했던 기억이 난다.
얼마 전에 책을 읽다가 이 차이점을 명확하게 설명해놓은 부분이 있어 메모해둔다.
프록시 패턴, 데코레이터 패턴에서 사용하고 있는, 전반적인 '프록시'에 대한 개념부터 설명을 시작해 쏙쏙~ 이해된다.^^


해결책:
프록시:
자신이 클라이언트가 사용하려고 하는 실제 대상인 것처럼 위장해서 클라이언트의 요청을 받아준다.
대리자, 대리인과 같은 역할을 한다고 해서 프록시(proxy)라고 부른다.
프록시를 통해 최종적으로 요청을 위임받아 처리하는 실제 오브젝트를 타깃(target) 또는 실체(real subject)라고 한다.

프록시의 특징은 타깃과 같은 인터페이스를 구현했다는 것과, 프록시가 타깃을 제어할 수 있는 위치에 있다는 것이다.

프록시는 사용 목적에 따라 두 가지로 구분할 수 있다.
a) 클라이언트가 타깃에 접근하는 방법을 제어하기 위함. (--> 프록시 패턴)
b) 타깃에 부가적인 기능을 부여해주기 위함. (--> 데코레이터 패턴)


데코레이터 패턴:
타깃에 부가적인 기능을 런타임 시 다이내믹하게 부여해주기 위해 프록시를 사용하는 패턴


프록시 패턴:
프록시 패턴의 프록시는 타깃의 기능을 확장하거나 추가하지 않는다.
대신 클라이언트가 타깃에 접근하는 방식을 변경해준다.
타깃의 기능 자체에는 관여하지 않으면서 접근하는 방법을 제어해주는 프록시를 이용하는 것이다.
(따라서 프록시 패턴의 프록시는 코드에서 자신이 만들거나 접근할 타깃의 구체적인 클래스 정보를 알고 있는 경우가 많다.)


요약:
프록시: 클라이언트와 사용 대상 사이에 대리 역할을 맡은 오브젝트를 두는 방법을 총칭.
데코레이터 패턴: 타깃에 부가적인 기능을 부여해주기 위해 프록시를 사용하는 패턴.
프록시 패턴: 타깃에 대한 접근 방법을 제어하려는 목적을 가지고 프록시를 사용하는 패턴. 

반응형
댓글
공지사항