C \ # 디자인 모드 (13) - 프 록 시 모드 (프 록 시 패턴)

머리말
소프트웨어 개발 과정 에서 일부 대상 은 네트워크 나 다른 장애 로 인해 이런 대상 을 직접 방문 하지 못 하거나 직접 방문 하지 못 할 때 가 있다. 만약 에 직접 방문 대상 이 시스템 에 불필요 한 복잡성 을 가 져 오 면 클 라 이언 트 와 목표 대상 사이 에 중간 층 을 추가 하여 대리 대상 이 목표 대상 을 대체 하도록 할 수 있다.그 다음 에 클 라 이언 트 는 대리 대상 을 방문 하고 대리 대상 이 우 리 를 도와 목표 대상 을 요청 하고 결 과 를 클 라 이언 트 에 게 되 돌려 주어 야 한다. 이런 해결 방향 은 바로 오늘 소개 할 대리 모델 이다.
2. 대리 모델 에 대한 상세 한 소개
대리 모드 는 사용 목적 에 따라 다음 과 같은 몇 가지 로 나 눌 수 있다.
  • 원 격 (Remote) 에이전트: 서로 다른 주소 공간 에 있 는 대상 에 게 국 역 대표 대상 을 제공 합 니 다.이 서로 다른 주소 공간 은 이 컴퓨터 일 수도 있 고 다른 컴퓨터 에 있 을 수도 있다.가장 전형 적 인 예 는 클 라 이언 트 가 웹 서비스 나 WCF 서 비 스 를 호출 하 는 것 이다.
  • 가상 (Virtual) 에이전트: 필요 에 따라 자원 소모 가 큰 대상 을 만 들 고 대상 이 필요 할 때 만 진정 으로 생 성 됩 니 다.
  • Copy - on - write 대리: 가상 에이전트 의 하나 로 복사 (또는 복제) 를 클 라 이언 트 가 필요 할 때 만 진정 으로 행동 하도록 지연 시 킵 니 다.
  • 보호 (Protect or Access) 에이전트: 한 대상 의 접근 을 제어 하고 서로 다른 사용자 에 게 서로 다른 등급 의 사용 권한 을 제공 할 수 있 습 니 다.
  • 방화벽 (Firewall) 대리: 악의 적 인 사용자 가 접근 하지 않도록 보호 합 니 다.
  • 스마트 참조 (Smart Reference) 에이전트: 한 대상 이 인용 되 었 을 때 이 대상 이 호출 된 횟수 를 기록 하 는 등 추가 적 인 조작 을 제공 합 니 다.
  • Cache 대리: 특정한 목표 가 조작 한 결과 에 임시 저장 공간 을 제공 하여 여러 클 라 이언 트 가 이 결 과 를 얻 을 수 있 도록 합 니 다.

  • 위의 모든 종류의 프 록 시 모드 에서 가상 프 록 시, 원 격 프 록 시, 스마트 참조 프 록 시 와 보호 프 록 시 에서 흔히 볼 수 있 는 프 록 시 모드 입 니 다.다음은 프 록 시 모델 의 구체 적 인 정 의 를 구체 적 으로 살 펴 보 자.
    2.1 정의
    프 록 시 모드 - 한 대상 에 게 프 록 시 를 제공 하고 프 록 시 대상 이 원래 대상 에 대한 인용 을 제어 하 는 것 입 니 다.일부 상황 에서 한 고객 이 한 대상 을 직접 인용 하고 싶 지 않 거나 인용 할 수 없 으 며 대리 대상 은 클 라 이언 트 와 목표 대상 사이 에서 중개 역할 을 할 수 있다.예 를 들 어 컴퓨터 데스크 톱 의 단축 키 는 프 록 시 대상 이 고 단축 키 는 인 용 된 프로그램의 에이전트 입 니 다.
    2.2 프 록 시 모드 구현
    대리 모델 에 대한 설명 을 본 후에 다음 과 같은 생활 속 의 예 를 들 어 대리 모델 을 설명 한다. 현실 생활 에서 만약 에 동료 가 출국 하거나 친구 가 출국 하 는 상황 에서 우 리 는 이 친구 에 게 전자 제품 이나 화장품 등 을 가 져 다 달라 고 부탁 하 는 경우 가 많다. 이 장면 에서 출국 하 는 친 구 는 바로 대리 이다. 그 (그녀) 는 그 (그녀) 이다.친구 의 한 대리인 은 그의 친구 가 외국 에 가서 물건 을 살 수 없 기 때문에 그 는 할 수 있 기 때문에 친구 들 이 모두 그 에 게 물건 을 좀 가 져 다 달라 고 부탁 했다.다음은 이 장면 으로 대리 모델 을 실현 하고 구체 적 인 코드 는 다음 과 같다.
    //      
        class Client
        {
            static void Main(string[] args)
            {
                //              
                Person proxy = new Friend();
                proxy.BuyProduct();
                Console.Read();
            }
        }
        //       
        public abstract class Person
        {
            public abstract void BuyProduct();
        }
        //      
        public class RealBuyPerson : Person
        {
            public override void BuyProduct()
            {
                Console.WriteLine("     IPhone       ");
            }
        }
        //     
        public class Friend:Person
        {
            //         
            RealBuyPerson realSubject;
            public override void BuyProduct()
            {
                Console.WriteLine("                ");
                if (realSubject == null)
                {
                    realSubject = new RealBuyPerson();
                }
                this.PreBuyProduct();
                //         
                realSubject.BuyProduct();
                this.PostBuyProduct();
            }
            //            
            public void PreBuyProduct()
            {
                //                 ,                           
                Console.WriteLine("      ,       ,  :    ,  :  Iphone...........");
            }
                             
            //       ,                         
            public void PostBuyProduct()
            {
                Console.WriteLine("     ,         ,      ;Iphone    ..........");
            }
        }

    위의 코드 에 상응하는 주석 이 있 는데, 여기에 도 설명 이 많 지 않다.
    2.3 프 록 시 모드 의 도표 구조
    대리 모델 의 실현 을 본 후에 다음은 위의 예 로 대리 모델 의 도표 구 조 를 분석 하 겠 습 니 다.구체 적 인 유 도 는 다음 과 같다.
    위의 도표 에서 대리 모델 과 관련 된 역할 은 세 가지 가 있다.
    추상 적 인 주제 역할 (Person): 실제 주제 와 대리 주제 의 공공 인 터 페 이 스 를 설명 합 니 다. 그러면 실제 주 제 를 사용 하 는 모든 곳 에서 대리 주 제 를 사용 할 수 있 습 니 다.
    프 록 시 테마 캐릭터 (Friend): 프 록 시 테마 캐릭터 내부 에 실제 주제 에 대한 인용 이 포함 되 어 있어 실제 주제 대상 을 조작 할 수 있 습 니 다.프 록 시 테마 역할 은 필요 할 때 실제 테마 대상 을 만 드 는 것 을 책임 집 니 다.프 록 시 역할 은 클 라 이언 트 를 실제 주제 로 호출 하기 전이 나 그 후에 다른 작업 을 수행 해 야 합 니 다. 단순히 실제 주제 대상 에 게 호출 하 는 것 이 아 닙 니 다.예 를 들 어 이곳 의 PreBuy Product 과 PostBuy Product 방법 은 대리 주제 역할 이 수행 하 는 다른 조작 이다.
    실제 주제 캐릭터 (RealBuyPerson): 대리 캐릭터 가 대표 하 는 진짜 대상 을 정의 했다.
    첨부: 실제 개발 과정 에서 저 희 는 클 라 이언 트 가 서비스 인용 을 추가 할 때 클 라 이언 트 프로그램 에 추가 적 인 종 류 를 추가 합 니 다. 클 라 이언 트 가 생 성 한 종 류 는 대리 주제 역할 을 합 니 다. 저희 클 라 이언 트 도 이러한 대리 역할 을 직접 호출 하여 원 격 서비스 가 제공 하 는 작업 을 방문 합 니 다.이것 은 원 격 에이전트 의 전형 적 인 예 이다.
    3. 대리 모델 의 장단 점
    대리 모델 을 전면적으로 분석 한 후에 이 모델 의 장단 점 을 살 펴 보 자.
    장점:
  • 프 록 시 모드 는 실제 호출 된 대상 을 격 리 시 켜 어느 정도 시스템 의 결합 도 를 낮 출 수 있다.
  • 대리 대상 은 클 라 이언 트 와 목표 대상 사이 에 중개 역할 을 하면 목표 대상 에 대한 보 호 를 할 수 있다.프 록 시 대상 은 대상 에 게 요청 을 하기 전에 권한 검사 등 추가 작업 을 할 수 있 습 니 다.

  • 단점:
  • 클 라 이언 트 와 실제 주제 사이 에 대리 대상 을 추 가 했 기 때문에 요청 한 처리 속도 가 느 려 집 니 다
  • 대리 류 를 실현 하 는 데 도 추가 적 인 업무 가 필요 하여 시스템 의 실현 복잡 도 를 증가 시 켰 다.

  • 총화
    여기까지 프 록 시 모드 에 대한 소개 가 끝 났 습 니 다. 프 록 시 모드 는 대상 에 대한 접근 대 리 를 제공 합 니 다.그리고 여기까지 구조 형 모델 에 대한 소개 도 끝났다. 구조 형 모델 은 어댑터 모델, 브리지 모델, 장식 자 모델, 조합 모델, 외관 모델, 향 원 모델 과 대리 모델 을 포함한다. 다음은 행위 형 모델 의 첫 번 째 모델 인 템 플 릿 방식 모델 을 소개 한다.

    좋은 웹페이지 즐겨찾기