👣 문제 상황
특정 객체에 대한 접근을 제어하거나 공통적으로 부가 기능을 부여해야 할 때, 사용함.
목적 : 객체를 접근하기 전에 일괄 적용하고 싶은 기능 부여
👣 해결 방법
interface Service {
void do();
}
class RealService1 implements Service {
@Override
public void do() {
System.out.println("Do it By RealService1");
}
}
class RealService2 implements Service {
@Override
public void do() {
System.out.println("Do it By RealService2");
}
}
class ServiceProxy implements Service {
private Service service;
public ServiceProxy(Service service) {
this.service = service;
}
@Override
public void display() {
System.out.println("PreTask In Proxy");
service.do();
System.out.println("PostTask In Proxy");
}
}
public class Main {
public static void main(String[] args) {
Service service1 = new ServiceProxy(new RealService1());
Service service2 = new ServiceProxy(new RealService2());
service1.display();
service2.display();
}
}
'디자인 패턴' 카테고리의 다른 글
MVC Pattern - 아키텍쳐 (0) | 2023.07.19 |
---|---|
Iterator Pattern - 행위 (0) | 2023.07.19 |
Observer Pattern - 행위 (0) | 2023.07.19 |
Strategy Pattern - 행위 (0) | 2023.07.19 |
Factory Pattern - 생성 (0) | 2023.07.19 |