2018. 6. 1. 16:29ㆍ용어정리/#디자인패턴
[ Proxy Pattern ]
프록시 패턴
2018 - 06 - 01
프록시는 대리자, 대변인이라는 뜻을 가진 단어다.
코드를 통해 프록시 패턴의 구성을 살펴보자
IService.java
1 2 3 4 5 | package proxyPattern; public interface IService { String runSomething(); } | cs |
IService 인터페이스를 구현한 Service.java
1 2 3 4 5 6 | package proxyPattern; public class Service implements IService { public String runSomething (){ return "서비스 짱!!"; } | cs |
IService 인터페이스를 구현한 Proxy.java
1 2 3 4 5 6 7 8 9 10 11 12 | package proxyPattern; public class Proxy implements IService { IService service1; public String runSomething (){ System.out.println("호출에 대한 흐름 제어가 주목적, 반환 결과를 그대로 전환"); Service1 = new Service(); return service1.runSomething(); } } | cs |
1 2 3 4 5 6 7 8 9 | package proxyPattern; public class ClientWithProxy { public static void main(String[] args){ // 프록시를 이용한 호출 IService proxy = new Proxy(); System.out.println(proxy.runSomething()); } } | cs |
IService는 인터페이스다.
ClientWithProxy에서 IService를 상속한 Proxy를 호출하면 Proxy는 작성된 코드 대로 IService의 String 값을 return해주고 그 값을 받은 Proxy는 다시 한번 ClientWithProxy로 return 해준다.
프록시 패턴의 중요 포인트를 짚어 보자.
대리자는 실제 서비스와 같은 이름의 메서드를 구현한다. 이때 인터페이스를 사용한다.
대리자는 실제 서비스에 대한 참조 변수를 갖는다(합성).
대리자는 실제 서비스의 같은 이름을 가진 메서드를 호출하고 그 값을 클라이언트에게 돌려준다.
대리자는 실제 서비스의 메서드 호출 전후에 별도의 로직을 수행할
여기서 대리자/대변인의 이름에 주목 해 보자. 청와대 대변인, 백악관 대변인은 해당 기관의 입장을 대변할 뿐 그 입장에 자신의 입장을 가감하지 않는다. 프록시 패턴이 실제 서비스 메서드의 반환값에 가감하지 않는다는 것이 이름에서 딱 느껴지지 않는가? 프록시 패턴은 실제 서비스 메서드의 반환 값에 가감하는 것을 목적으로 하지 않고 제어의 흐름을 변경하거나 다른 로직을 수행하기 위해 사용한다. 프록시 패턴을 한 문장으로 정리해 보자.
"제어 흐름을 조정하기 위한 목적으로 중간에 대리자를 두는 패턴"
출처
스프링 입문을 위한 자바 객체 지향의 원리와 이해
김종민 지음
'용어정리 > #디자인패턴' 카테고리의 다른 글
용어정리-[#디자인패턴] 5.Template Method Pattern (0) | 2018.06.01 |
---|---|
용어정리-[#디자인패턴] 4.Singleton Pattern (0) | 2018.06.01 |
용어정리-[#디자인패턴] 3.Decorator Pattern (0) | 2018.06.01 |
용어정리-[#디자인 패턴] 1.Adapter Pattern (0) | 2018.06.01 |