📌프록시(Proxy)란?
프록시(Proxy)란 우리말로 대리자, 대변인 이라는 뜻이다. 뜻에서도 유추할 수 있듯이 무언가를 대신해주는 구조의 패턴이다. 즉, 어떤 객체를 사용하고자 할때, 객체를 직접적으로 참조하는 것이 아니라, 해당 객체를 대행(proxy)하는 객체를 통해 대상 객체에 접근하는 방식이다. 이 방법을 사용하면 해당 객체가 메모리에 존재하지 않아도 기본적인 정보를 참조하거나 설정할 수 있기 때문에 실제 객체가 필요한 시점까지 객체의 생성을 미룰 수 있다.
아래 링크를 참고하면 프록시(Proxy)를 이해하는데 더 도움될 것이다.
https://yeo-computerclass.tistory.com/213
Proxy 패턴 클래스 다이어 그램
프록시 패턴(Proxy Pattern)은 실제 서비스 메소드의 반환값에 영향을 주지 않는다.
오직 제어의 흐름을 변경하거나 별도의 로직 처리하기 위해 사용한다. 즉 제어 흐름을 조정하기 위한 목적으로 중간에 대리자(Proxy)를 두는 패턴이다.
AOP 프록시
AOP는 모든 객체에 공통으로 적용되는 기능들을 구현하는 개발 방법을 말한다.
여러 메소드들의 실행이 걸리는 시간이나 트랜잭션 적용 등 공통으로 적용하고 싶을 때 사용된다.
위 코드에서는 실제 타겟인 realSubject의 action() 메소드가 실행되기 전 후에 preProcess() 메소드와 postProcess() 메소드가 실행됨을 알 수 있다.
멀티쓰레드 안정성 제공 | action() 메서드 걸린 시간 | |
preProcess() | mutex.lock() | startTime = System.currentTimeMillis() |
action() | action() | action() |
postProcess() | mutex.unlock() | endTime = System.currentTimeMillis() |
이렇게 실제 객체는 그대로 두고 모든 객체들이 공통으로 수행해야 할 일들을 프록시 객체를 통해서 구현할 수 있다.
(프록시로 AOP를 구현할 수 있다는 것을 보여준 것이다. Spring 프레임워크에서는 reflection을 이용하여 AOP를 구현한다.)
'디자인 패턴' 카테고리의 다른 글
[디자인 패턴] 어댑터 패턴(Adapter Pattern) (0) | 2022.03.22 |
---|---|
[디자인 패턴] 싱글톤 패턴(Singleton Pattern) (0) | 2022.03.21 |