1. 프록시 패턴이란?
실제 객체를 바로 이용하는 것 대신 가상 객체에 실제 객체를 선언하여 실제 객체의 기능과 추가적인 기능을 사용함으로 써 기능의 흐름을 제어하는 디자인 패턴입니다.
2. 프록시 패턴 장점
1) 실제 객체를 수행하기 전에 전처리를 하거나 기본 객체를 캐싱할 수 있다.
2) 실제 객체를 수정하지 않고 추가적인 기능을 삽입할 수 있다.
3. 프록시 패턴 예제
1) MainSender.java
public interface MailSender {
public void send(String message);
}
2) RealMailSender.java
public class RealMailSender implements MailSender {
@Override
public void send(String message) {
System.out.println("[SEND] : " + message);
}
}
실제 MailSender를 구현하는 부분이다.
3) ProxyMailSender.java
import java.util.Objects;
public class ProxyMailSender implements MailSender {
private MailSender mailSender = null;
public ProxyMailSender() {
}
@Override
public void send(String message) {
if (Objects.isNull(mailSender)) {
mailSender = new RealMailSender();
}
System.out.println("proxy before process");
mailSender.send(message);
System.out.println("proxy after process");
}
}
ProxyMailSender 클래스는 MailSender 인터페이스의 send 메소드를 구현하지만 실제로는 RealMailSender의 send메소드를 실행시킨다. send 메소드를 수행하기 이전에 필요한 기능을 추가할 수 있다.
4) Main.java
public class Main {
public static void main(String[] args) {
MailSender mailSender = new ProxyMailSender();
mailSender.send("Hello world!");
}
}
ProxyMailSender를 생성해서 send메소드를 수행한다.
( MailSender에는 ProxyMailSender 또는 RealMailSender를 삽입해도 아무 문제 없이 send 메소드를 수행할 수 있다. )
5) 결과
proxy before process
[SEND] : Hello world!
proxy after process
'IT > 디자인 패턴' 카테고리의 다른 글
[Design Pattern] 추상 팩토리 패턴(Abstract factory pattern) (0) | 2020.10.27 |
---|---|
[디자인 패턴] 팩토리 메소드 패턴 (0) | 2020.10.19 |
[디자인 패턴] 템플릿 메소드 패턴(Template Method Pattern) (0) | 2020.10.16 |
[디자인 패턴] 컴포지트 패턴(Composite pattern) (0) | 2020.10.14 |
MVVM 패턴이란? (0) | 2020.05.09 |