Heim  >  Artikel  >  Backend-Entwicklung  >  Eine kurze Einführung in den Proxy-Modus in C++-Entwurfsmustern

Eine kurze Einführung in den Proxy-Modus in C++-Entwurfsmustern

黄舟
黄舟Original
2017-01-18 15:01:091135Durchsuche

Proxy-Modus (Proxy): Stellt einen Proxy für andere Objekte bereit, um den Zugriff auf dieses Objekt (den Proxy, also die Person) zu steuern.

Um eine Methode in C# zu implementieren, müssen Sie eine Schnittstelle verwenden, um die erforderlichen Methoden zu definieren, während Sie in C++ eine Klasse als Schnittstelle implementieren und die erforderlichen Methoden definieren müssen. In diesem Fall muss ich nicht an den spezifischen Aktivitäten teilnehmen, aber der Agent wird dies tun. Auch der Kunde (Dritter) kennt mich nicht und agiert somit als Vermittler.

Das Obige bedeutet: Verwenden Sie eine Klasse, um die erforderlichen Proxy-Methoden zu kapseln.

Anwendung des Proxy-Modus:

Remote-Erstellung, d. h. Bereitstellung einer lokalen Darstellung für ein Objekt in verschiedenen Adressräumen. Dies verbirgt die Tatsache, dass ein Objekt in einem anderen Adressraum existiert. 【DP】

Virtuelle Agenten sind teure Objekte, die nach Bedarf erstellt werden müssen. Es wird zum Speichern realer Objekte verwendet, deren Instanziierung lange dauert. Wenn wir beispielsweise eine große HTML-Webseite öffnen, ist das angezeigte Bild erst nach dem Herunterladen sichtbar und der Zugriff auf die ungeöffnete Bildbox erfolgt über einen virtuellen Proxy echtes Bild. Zu diesem Zeitpunkt speichert der Agent den Pfad und die Abmessungen des realen Bildes.

Sicherheits-Proxy wird verwendet, um die Berechtigungen beim Zugriff auf reale Objekte zu steuern [DP]. Er wird im Allgemeinen verwendet, wenn Objekte unterschiedliche Zugriffsberechtigungen haben sollen.

Intelligente Führung bedeutet, dass der Agent andere Dinge erledigt, wenn das reale Objekt aufgerufen wird [DP].

Hier nehmen wir das Mobiltelefonpaket einer Agentur als Beispiel:

Testfall:

[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;
}

Proxy-Klassen-Implementierungsmethode:

[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();
    }

};

The Oben ist C++ Eine kurze Einführung in das Designmodell und den Inhalt des Agenturmodells. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.cn)!


Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn