C#/GoF 디자인패턴

[GoF]12.원격 프록시 패턴(Proxy Pattern)

공부를하자 2023. 10. 25. 01:24

1.정의

- 프록시 패턴은 사용하는 개체를 통해 실제 개체를 제어하는 패턴.

- 원격지 프록시는 사용할 실제 개체가 클라이언트와 다른 위치에 있을 때 원격지에 있는

  개체처럼 사용할 수 있는 프록시를 말한다.

2.시나리오

-가족들은 이번에는 여수에 여행을 왔다.

-사진을 찍는데 직접 손으로 셔터를 누르는 법보단 원격 리모컨을 사용하는 방식이 편할 같았다.

3.다이어 그램

-위의 다이어그램은 소켓 통신을 통한 서버측과 클라이언트로 구분하였다.

-서버측은 Camera 객체와 클라이언트 연결을 기다리는 ListenSever 객체와 실제 소켓 통신을 수행하여 카메라를 제어하는 Stub 객체가 있다.

-클라이언트 측은 서버측에 있는 카메라를 제어하고 소켓통신을 하는 RemoteController 있다.

-Camera   RemoteController  iTake()인터페이스를 상속받아 여러 기능을 약속 받는다.

4.구현

1)ITake 인터페이스

-Camera RemoteController 기능을 약속하는 인터페이스

2)Camera 클래스

3)ListenSever클래스

-ListenServer에서는 소켓을 생성하여 클라이언트의 연결을 기다리는 기능을 한다.

4)Stub 클래스

-Stub 개체는 클라이언트 측에서 요청하는 것이 무엇인지 확인하여 요청대로 Camera 개체를 사용하고 결과가 필요한 경우에 다시 클라이언트 측에게 전달.

 

5)RemoteController클래스

- 원격 프락시 개체로 서버 측의 Stub과 소켓 통신하여 서버 측에 있는 실제 개체인 Camera 개체를 제어.

 

6)테스트

-서버측

-클라이언트