본문 바로가기

프로그래밍 강의 메모/코딩으로 학습하는 GoF의 디자인 패턴_백기선

구조 관련 디자인 패턴 > 프록시 패턴(Proxy Pattern)

https://inf.run/6Shr

 

코딩으로 학습하는 GoF의 디자인 패턴 - 인프런 | 강의

디자인 패턴을 알고 있다면 스프링 뿐 아니라 여러 다양한 기술 및 프로그래밍 언어도 보다 쉽게 학습할 수 있습니다. 또한, 보다 유연하고 재사용성이 뛰어난 객체 지향 소프트웨어를 개발할

www.inflearn.com

 

 

프록시 패턴

  • 구조 관련 디자인 패턴.
  • 특정 객체에 대한 접근을 제어하거나 기능을 추가할 수 있는 패턴.
  • 초기화 지연, 접근 제어, 로깅, 캐싱 등 다양하게 응용해 사용할 수 있다.

 

 

특정한 객체의 오퍼레이션들을 접근하기 전에 프록시 객체를 먼저 지나서 접근하게 된다.

프록시는 사전적인 의미로 대리, 대리인이라는 뜻이 있어서 클라이언트가 원래 사용하려는 객체를 직접 사용하는 것이 아니라 대리인을 거쳐서 쓰는 패턴이다.

 

이렇게 만들면 해당객체에 접근을 제어할 수 있게 된다.

그 객체가 생성하는데 많은 리소스가 필요한 인스턴스라면,

어플리케이션을 구동할 때 미리 만들어 놓아,

사용하지 않으면 필요없는 행위를,

처음 사용할 때 생성하는 초기화 지연 방법을 적용할 수 있다.

 

로깅, 캐싱을 할 수 있게 된다.

 

 

 

 

 

Client가 궁극적으로 사용하고 싶은 객체는 RealSubject라고 하자.

 

RealSubject는 Subject라는 인터페이스를 실체화하고 있다.

 

Client는 이 Subject 인터페이스를 의존하여 사용하고 있다.

 

그리고 Client는 이 SubjectRealSubject 인스턴스를 할당하는 것이 아니라,

Proxy 인스턴스를 할당하여 사용한다.

 

Proxy 클래스또한 Subject를 실체화하는 클래스이고,

ProxySubject 인터페이스를 멤버로 갖고있어 RealSubject 인스턴스를 할당하여 의존하여 사용한다.

 

Proxy는 마치 데코레이터 패턴처럼 본인이 상속받은 인터페이스를 멤버로 갖고있다.

 

 

 

 



 

프록시 패턴의 장점

1. 기존 코드를 변경하지 않고 새로운 기능을 추가할 수 있다.

Open-Closed Principle(OCP) 만족.

 

2. 기존 코드가 해야하는 일만 유지할 수 있다.

single-responsibility principle(SRP) 만족.

 

3. 기능 추가 및 초기화 지연 등으로 다양하게 활용할 수 있다.

 

 

 

 

 

 

https://refactoring.guru/ko/design-patterns/proxy

 

Proxy

There are dozens of ways to utilize the Proxy pattern. Let's go over the most popular uses. Access control (protection proxy). This is when you want only specific clients to be able to use the service object; for instance, when your objects are crucial par

refactoring.guru