프록시 모드(Proxy): 다른 개체에 대한 프록시를 제공하여 이 개체(프록시, 즉 사람)에 대한 액세스를 제어합니다.
C#에서는 인터페이스를 사용하여 필요한 메소드를 정의해야 하고, C++에서는 클래스를 인터페이스로 구현하고 필요한 메소드를 정의해야 합니다. 이 경우 특정 활동에 내가 참여할 필요는 없지만 에이전트가 참여하게 됩니다. 의뢰인(제3자)도 나를 모르므로 대리인 역할을 합니다.
위의 의미는 클래스를 사용하여 필요한 프록시 메서드를 캡슐화한다는 의미입니다.
프록시 모드 적용:
원격 생성, 즉 서로 다른 주소 공간에 있는 개체에 대한 로컬 표현을 제공합니다. 이는 개체가 다른 주소 공간에 존재한다는 사실을 숨깁니다. 【DP】
가상 에이전트는 필요에 따라 생성하기에는 비용이 많이 드는 개체입니다. 예를 들어, 큰 HTML 웹 페이지를 열 때 우리가 보는 그림은 다운로드 후에만 볼 수 있고 열리지 않은 그림 상자는 가상 프록시를 통해 액세스됩니다. 실사. 이 시점에서 에이전트는 실제 이미지의 경로와 크기를 저장합니다.
보안 프록시는 실제 개체에 액세스할 때 권한을 제어하는 데 사용됩니다[DP]. 일반적으로 개체에 다른 액세스 권한을 부여해야 하는 경우에 사용됩니다.
스마트 안내란 실제 객체가 호출되면 에이전트가 다른 일을 처리한다는 것을 의미합니다[DP].
대행사 휴대폰 패키지를 예로 들어보겠습니다.
테스트 케이스:
[code]int main(){//整个过程中,本人都没有出现 std::string name = "Jarrett"; //第三方公司 Company cp(name); //申请人(本人)的名字告诉公司 //代理人 Proxy *px = new Proxy(cp); //办理58元套餐 px->A58(); //办理88元套餐 px->A88(); //办理128元套餐 px->A128(); return 0; }
프록시 클래스 구현 방법:
[code]//主体,提供接口。无需实例化,定义为纯虚函数 class Subject{ public: virtual void A58()const = 0; virtual void A88()const = 0; virtual void A128()const = 0; }; //第三方公司 class Company{ public: std::string name; //公司要知道办理套餐本人的名字 Company(std::string na):name(na){} }; //本人(被代理人) class oneSelf: public Subject{ private: Company cp; //本人要知道自己对谁做什么,此处自己知道要对哪个公司办理套餐 public: oneSelf(Company c):cp(c){} //此处由代理类来初始化 void A58()const override{ std::cout << cp.name << " for 58 packages.\n"; //告诉移动公司,我要办58套餐 } void A88()const override{ std::cout << cp.name << " for 88 packages.\n"; } void A128()const override{ std::cout << cp.name << " for 128 packages.\n"; } }; class Proxy:public Subject{ private: //代理谁? oneSelf os; public: Proxy(Company cp):os(oneSelf(cp)){} //此处初始化本人的构造函数,达到了代理的目的 void A58()const override{ os.A58(); } void A88()const override{ os.A88(); } void A128()const override{ os.A128(); } };
위는 대행사에 대한 간략한 소개입니다. C++ 디자인 패턴 프록시 모드의 내용에 대해 더 많은 관련 내용을 보려면 PHP 중국어 웹사이트(www.php.cn)에 주목하세요!