구조 패턴: 프록시 패턴
소개
특정 객체에 대한 접근을 제어하거나 기능을 추가할 수 있는 패턴이다.
- 초기화 기젼, 접근 제어, 로길, 캐싱 등 다양하게 응용하여 사용할 수 있다.
1) 장점
- 기존 코드를 변경하지 않고 새로운 기능을 추가할 수 있다.
- 기존 코드가 해야 하는 일만 유지할 수 있다.
- 기능 추가 및 초기화 지연 등으로 다양하게 활용할 수 있다.
2) 단점
- 코드의 복잡도가 증가한다.
구현
1) 인터페이스 정의
public interface GameService {
void startGame();
}
2) 인터페이스를 구현하는 프록시 클래스 정의
- 멤버 변수로 인터페이스를 구현하는 클래스의 인스턴스(구체 인스턴스)를 가진다.
- 이후, 이터페이스를 오버라이딩 하는 곳에서 구체 인스턴스를 호출한다.
public class GameServiceProxy implements GameService {
private GameService gameService;
@Override
public void startGame() {
long before = System.currentTimeMillis();
if(this.nameService == null) {
this.gameSerivce = new DefaultGameService();
}
gameService.startGame();
System.out.println(System.currentTimeMiliis() - before);
}
}
3) 인터페이스를 구현하는 구체 클래스 정의
public class DefaultGameService implements GameService {
@Override
public void startGame() {
System.out.println("이 자리에 오신 여러분을 진심으로 환영합니다.");
}
}
사용
public class Client {
public static void main(String[] args) {
GameService gameService = newGameServiceProxy();
gameService.startGame();
}
}
Author And Source
이 문제에 관하여(구조 패턴: 프록시 패턴), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@zenon8485/구조-패턴-퍼사드-패턴-2uf72dvg저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)