프록시 패턴

반응형
반응형

프록시 패턴을 알기전에 프록시라는 단어를 알아야 할듯 싶다.

프록시는 대리라는 뜻을 가지고 있다. 그러면 뭔가 대신해주는 패턴이라는건데 무엇을 대신해준다는 걸까?

 

예를 들어, 복잡한 일이 있다고 가정하자. 또, 그 일은 혼자서 하기 힘들다고 가정하자. 그러면 그 일을 누군가가 대신해준다면... 일은 더 수월하게 끝낼 수 있을 지도 모른다.  IT세상에서는 혼자서 처리하기 힘들다기 보다는 프록시라는 객체가 있기 때문에 더 수월하다는 느낌을 받는다. 즉, 프록시에 도움을 받는 그런 기분을 받는다.

 

프록시 패턴에는 총 3가지 종류의 패턴이 존재한다.

가상 프록시 패턴,

원격 프록시 패턴,

보호 프록시 패턴

 

여기서 우리가 알아볼 패턴은 가상 프록시 패턴이다. (물론, 원격이나 보호의 내용이 전혀 다르기 때문에 이렇게 불리는게 아니라 사용범위에 따라 이런식으로 불리는 듯 싶다.)

 

간단하게 예제를 만들어 보자.

 

쿠키 가게에서 쿠키를 만드는 예제를 만들어 보자.

public class CookieStore implements Cookie{

	@Override
	public void make() {
		System.out.println("쿠키를 만듭니다.");
		
	}

}

하지만 이 쿠키를 만드는게 생각보다 복잡해서 다른 쿠키가게에 도움을 받아야 한다고 가정하자.(말도 안되지만...)

public class ProxyCookieSotore implements Cookie{
	
	private Cookie real;
	@Override
	public void make() {
		real.make();
	}

}

 

이런식으로 작성된다. 그래서 뭐 어쩌라는 걸까? 조금만 생각하면 쉬울지도 모른다. 

이제 이 프록시 객체를 호출해보자. 그러면 real.make()에 맞게 객체값이 리턴된다. 이게 프록시 패턴이다. 

이제 우리는 proxy객체는 건들지 않는 상태에서 얼마든지 원 객체에서 값을 마음대로 수정이 가능하다.

그리고 막상 사용되는건 proxy객체다.

 

이렇다는건 proxy객체가 대신해서 쿠키store의 역할을 수행한다는 건데.... 그러면 쿠키Store객체는 정말 나쁜 객체가 틀림없을지도 모른다. 왜냐하면 프록시 객체가 main문으로 나와 일하지만 막상 돈을 받는건 쿠키Store객체이기 때문이다.

 

여러 사람들의 이야기를 들어보면 프록시 패턴은 실무에서 많이 사용하지 않는다고 한다. 하지만 이미 proxy관련해서 많은 것들이 만들어졌다. 그렇기 때문에 이들을 이해하기 위해서는 조금이라도 이 패턴혹은 프록시에 대해 알고 있어야 하지 않을까?

 

대표적으로 프록시 서버, 자바의 reflect, aop등이 있다. 

솔직히 프록시 서버에 대해 잘 모르지만, 이에 대해 유추해보면 실제 서버가 있는데, 사용자가 접근하는건 프록시서버이고 이 프록시 서버가 실제 서버를 대신해서 역할을 수행하는 그런 느낌인것 같다. 즉, 프록시 서버 주소와 실제 서버 주소는 전혀 다르지만, 프록시 서버가 하는일이 실제 서버와 하는일과 같다고 할수 있을 것같다.(물론 반대는 말이 안되지만)

 

아직도 이 패턴에 대해 알수없는 의문이 존재하는건 사실이지만... 천천히 진행할 예정이다. 천천히...

 

그래도 결과적으로 정리하면, 프록시 객체는 실제 객체를 대신해서 사용되지만, 프록시 객체는 참조 역할만 한다.  또,많은 사람들은 이러한 프록시 객체를 가짜 객체라고 칭하기도 한다. 프록시 패턴을 사용한다면 어떤 이점이 있을까?

 

 

 

 

 

반응형

'디자인패턴' 카테고리의 다른 글

탬플릿 패턴  (0) 2020.06.05
빌더 패턴  (0) 2020.05.27
싱글톤 패턴  (0) 2020.05.12
팩토리 패턴  (0) 2020.05.06
데코레이터 패턴  (0) 2020.05.02

댓글

Designed by JB FACTORY