- Spring에서 자주 쓰이는 디자인 패턴 42022년 11월 05일
- starryeye
- 작성자
- 2022.11.05.:04
이전 포스팅에서..
프록시의 개념에 대해 알아봤고..
프록시를 사용하는 의도에 따라 구분되는 두가지 패턴중..
(프록시 패턴, 데코레이터 페턴)
프록시 패턴에 대해 알아보자..
프록시 패턴은
접근 제어에 초점을 맞추어 사용되는 프록시 개념을 도입한 패턴이다.
예제를 통해 알아보자..Client(ProxyPatternClient)가 Subject 인터페이스를 의존하고 있다.
Proxy(CacheProxy)에 해당하는 구체와 Server(RealSubject)에 해당하는 구체가
동일한 인터페이스(Subject)를 구현하고 있다.위는 런타임 의존 관계를 표현한 클래스 다이어그램이다.
실제 코드로 알아보자프록시와 서버가 구현해야할 인터페이스이다.
위는 Subject 인터페이스를 구현한 실제 객체에 해당한다.
operation 메서드를 오버라이딩 하고 있으며..
operation 메서드를 호출 시, 내부적으로 1초의 시간이 걸리도록 하였다.위는 Subject 인터페이스를 구현한 프록시 객체이다.
내부 변수로 실제 객체(target, RealSubject)를 가지고 있으며
생성될때 미리 받아 놓는다.
operation 메서드를 오버라이딩 하여 구현하고 있다.
target의 반환값을 cacheValue 에 저장(캐시)한다.
target의 반환값을 그대로 반환한다.Client 는 프록시와 실제 객체의 인터페이스인 Subject 를 변수로 가지고 있으며,
생성자에서 주입받아 사용한다.
execute 메서드에서 Subject(인터페이스)의 operation 메서드를 호출 해준다.
이제 Client 가 동작 되는 Test 코드를 보고 동작을 알아보자..21 line에서 RealSubject 를 생성해준다.
22 line에서 프록시 객체를 생성 해주고 target에 해당하는 realSubject 객체를 주입해준다.
23 line에서 Client를 생성해주고 cacheProxy 객체를 주입해준다.
그리고 client의 execute 메서드를 3번 호출 해주고 있다.
실제 동작은..
24 line 수행
Client가 프록시를 호출해주고 최초 호출 이므로 프록시 내부 cacheValue 가 Null이라..
target(RealSubject)의 operation 메서드를 호출(1초 걸림)하여 반환 값을 cacheValue 에 저장한다.
그리고 cacheValue 값을 Client 에 반환한다.
25 line 수행
Client 가 프록시를 호출하는데 두번째 호출이라 내부 cacheValue가 Null이 아니기 때문에
target 의 operation 메서드를 호출하지 않고(접근제어)
프록시가 가지고 있는 cacheValue 를 바로 반환한다.
-> target 을 호출하지 않기 때문에 1초의 시간이 걸리지 않는다.
26 line 수행
-> 25 line과 동일
만약에..
프록시 계층이 없었다면...
Client 가 실제 객체인 RealSubject 를 3회 호출하기 때문에 전체 3초가 걸린다....
-> 위에서는 프록시가 있어서 1초만 걸림.
캐시 덕분에 빠르게 처리가 가능해졌다.'Spring > Core' 카테고리의 다른 글
Spring에서 프록시 사용 1 (0) 2022.11.05 Spring에서 자주 쓰이는 디자인 패턴 5 (0) 2022.11.05 Spring에서 자주 쓰이는 디자인 패턴 3 (0) 2022.11.05 Spring에서 자주 쓰이는 디자인 패턴 2 (0) 2022.10.20 Spring에서 자주 쓰이는 디자인 패턴 1 (0) 2022.10.19 다음글이전글이전 글이 없습니다.댓글