정의[위키피디아]
프록시 패턴(proxy pattern)은 컴퓨터 프로그래밍에서 소프트웨어 디자인 패턴의 하나이다.
일반적으로 프록시는 다른 무언가와 이어지는 인터페이스의 역할을 하는 클래스이다.
프록시는 어떠한 것(이를테면 네트워크 연결, 메모리 안의 커다란 객체,
파일, 또 복제할 수 없거나 수요가 많은 리소스)과도 인터페이스의 역할을 수행할 수 있다.
정의[쉽게]
단어적의미 Proxy
1.대리[위임](권)
2.대리인
3.명사 격식 또는 전문 용어 (측정·계산하려는 다른 것을 대표하도록 이용하는) 대용물
프록시 패턴은 프로그램에서 대리로 사용할 객체를 만들어서 사용한다.
프록시 패턴은 OCP, DIP 원칙을 구현한다.
우리가 스프링에서 쉽게 볼 수 있는 인터페이스 - 구현체의 관계로 이해된다.
소스코드로 이해하기
프록시 이전
Service.java
public class Service {
public String runSomething() {
return "서비스 짱";
}
}
ClientWithNoProxy.java
public class ClientWithNoProxy {
public static void main(String[] args) {
// 프록시를 이용하지 않은 호출
Service service = new Service();
System.out.println(service.runSomething());
}
}
프록시 이후
IService.java
/*
* Proxy 패턴에 사용할 대리자 (Interface)
*/
public interface IService {
String runSomething();
}
Service2.java
/*
* Proxy 패턴에 사용할 구현체
*/
public class Service2 implements IService {
@Override
public String runSomething() {
return "서비스 짱 !!!";
}
}
Proxy.java
/*
* Proxy 패턴에 사용할 구현체
*/
public class Proxy implements IService {
/* Proxy 패턴을 이용한, 대리객체 이용 */
IService service2;
@Override
public String runSomething() {
System.out.println("호출에 대한 흐름 제어가 주목정, 반환 결과를 그대로 전달");
service2 = new Service2();
return service2.runSomething();
}
}
ClientWithProxy.java
public class ClientWithProxy {
public static void main(String[] args) {
// 프록시 대리 객체를 이용한 호출
IService proxy = new Proxy();
System.out.println(proxy.runSomething());
}
}
프록시 패턴은 특히 스프링에서 DI 를 구현시 빈번하게 사용하는 패턴이다.
참고서적 : 스프링 입문을 위하 자바 객체지향의 원리와 이해
'객체지향 (OOP) > 디자인 패턴' 카테고리의 다른 글
팩토리 메서드 패턴(Factory method pattern) (0) | 2021.06.30 |
---|---|
템플릿 메소드 패턴(template method pattern) (0) | 2021.06.29 |
싱글톤 패턴(Singleton Pattern) (0) | 2021.06.28 |
데코레이터 패턴 (Decorator Pattern) (0) | 2021.06.28 |
어댑터 패턴 (Adapter Patter) (0) | 2021.06.22 |