Subject : Proxy와 RealSubject가 구현해야 하는 인터페이스, Client의 요청을 나눠 처리하기 위함
Proxy : 간단한 요청을 처리해주는 객체, 요청이 복잡할 경우 내부 RealSubject 객체에게 요청 위임
RealSubject : 복잡한 요청을 처리해주는 객체, Client는 Proxy를 통해 접근
프록시 패턴 적용
Subject - Proxy와 RealSubject가 구현해야 하는 인터페이스
package StructuralPatterns.Proxy;
public interface Subject {
//간단요청
public void doAction1();
//복잡요청
public void doAction2();
}
Proxy - 간단한 요청을 처리해주는 객체, 요청이 복잡할 경우 내부 RealSubject 객체에게 요청 위임
package StructuralPatterns.Proxy;
public class Proxy implements Subject{
private Subject real;
public Proxy(Subject real) {
this.real = real;
}
@Override
public void doAction1() {
System.out.println("간단 업무 처리 by Proxy");
}
@Override
public void doAction2() {
//복잡 요청은 RealSubject에게 위임
real.doAction2();
}
}
RealSubject - 복잡한 요청을 처리해주는 객체, Client는 Proxy를 통해 접근
package StructuralPatterns.Proxy;
public class RealSubject implements Subject{
@Override
public void doAction1() {
System.out.println("간단 업무처리 by Real");
}
@Override
public void doAction2() {
System.out.println("복잡 업무처리 by Real");
}
}
Client & 실행결과
package StructuralPatterns.Proxy;
public class Client {
public static void main(String[] args) {
Subject proxy = new Proxy(new RealSubject());
proxy.doAction1();
proxy.doAction2();
}
}