Contents
예시프록시 패턴(Proxy Pattern)은 다른 객체에 대한 접근을 제어하기 위해 대리자 객체(프록시)를 사용하는 패턴입니다.
프록시는 실제 객체를 감싸고, 사용자가 실제 객체와 상호 작용하는 것처럼 보이게 하면서도, 여러 가지 부가 기능(예: 접근 제어, 로깅, 캐싱 등)을 수행할 수 있습니다.
예시
기존에 작성한 클래스 파일 내용 :
public class Doorman implements Todoable {
// DIP > Dependency Inversion Principle
public void 쫒아내(Animal animal) {
System.out.println(animal.getName() + "쫒아내");
}
}
Animal 객체를 받아 해당 Animal의 이름+쫒아내 라는 문자열을 출력하도록 메소드가 작성되어있습니다.
‘Animal의 이름+쫒아내’ 문자열이 출력되기 이전에 ‘안녕’이라는 문자열을 먼저 출력하고 싶다면 단순히 해당 클래스의 메소드 내용을 수정하는 방법도 있으나, 프록시 패턴을 이용하면 기존 파일의 작성 내용을 수정하지 않고, ‘안녕’이라는 문자열을 먼저 출력할 수 있습니다.
프록시 패턴 적용에 필요한 클래스 파일 예제 :
public class DoormanProxy implements Todoable {
Doorman doorman;
public DoormanProxy(Doorman doorman) {
this.doorman = doorman;
}
public void 쫒아내(Animal animal) {
System.out.println("안녕");
doorman.쫒아내(animal);
}
}
DoormanProxy 를 생성할 때 Doorman 객체를 전달 받게 작성하였으며, DoormanProxy 객체의
‘쫒아내(Animal animal)’ 메소드를 사용하였을 때 먼저 ‘안녕’ 이라는 문자열을 출력한 뒤, Doorman 객체의 쫒아내 메소드를 호출함으로써 기존의 Doorman 클래스 파일을 수정하지 않아도 됩니다.
Share article