Java & Kotlin/Java
[Design Pattern] Proxy Pattern
전봉근
2020. 1. 12. 13:17
반응형
프록시 패턴(Proxy Pattern)
프록시 패턴은 쉽게 말해서 대리인
이라고 생각하면되고, 작업
을 나누어서 구현할 수 있다. 일반적으로 프록시는 다른 무언가와 이어지는 인터페이스의 역할을 하는 클래스이다. 프록시는 어떠한 것과도 인터페이스의 역할을 수행할 수 있다. 즉, 프록시는 결과값을 조작하거나 변경하면 안된다.
Client 요청을 proxy가 처리하고, proxy가 처리하지 못한곳은 실제 업무를 처리하는곳에서(=RealSubject) 처리하면 된다.
프록시 패턴 예시 - 1
먼저 Subject 인터페이스를 생성한다.
[Subject.java]
package com.bkjeon.proxy;
public interface Subject {
// 리소스가 적게 드는 일
void action1();
// 리소스가 많이 드는 일 (네트워크, 메모리가 많이 사용)
void action2();
}
업무를 처리할 Proxy 클래스를 구현한다.
[Proxy.java]
package com.bkjeon.proxy;
public class Proxy implements Subject {
private Subject real;
public Proxy(Subject real) {
this.real = real;
}
@Override
public void action1() {
System.out.println("간단한 업무 by 프록시");
}
@Override
public void action2() {
this.real.action2();
}
}
실제 업무를 처리할 RealSubject 클래스를 구현한다.
[RealSubject.java]
package com.bkjeon.proxy;
public class RealSubject implements Subject {
@Override
public void action1() {
System.out.println("간단한 업무 by 실제");
}
@Override
public void action2() {
System.out.println("복잡한 업무 by 실제");
}
}
메인 클래스를 구현한다.
[Main.java]
package com.bkjeon.proxy;
public class Main {
public static void main(String[] args) {
Subject real = new RealSubject();
Subject proxy1 = new Proxy(real);
Subject proxy2 = new Proxy(real);
proxy1.action1();
proxy2.action1();
proxy1.action2();
proxy2.action2();
}
}
결과
간단한 업무 by 프록시
간단한 업무 by 프록시
복잡한 업무 by 실제
복잡한 업무 by 실제
반응형